week_of_month 1.2.3.4 → 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rvmrc +60 -0
- data/Gemfile +2 -3
- data/Gemfile.lock +26 -6
- data/README.md +3 -4
- data/Rakefile +2 -2
- data/lib/modules/constant.rb +15 -16
- data/lib/modules/day.rb +35 -37
- data/lib/modules/month.rb +12 -13
- data/lib/modules/version.rb +1 -1
- data/lib/modules/week.rb +15 -17
- data/lib/modules/year.rb +3 -5
- data/lib/test/modules/date/test_constant.rb +58 -0
- data/lib/test/modules/date/test_day.rb +143 -0
- data/lib/test/modules/date/test_month.rb +166 -0
- data/lib/test/modules/date/test_week.rb +201 -0
- data/lib/test/modules/date/test_year.rb +13 -0
- data/lib/test/modules/time/test_constant.rb +58 -0
- data/lib/test/modules/time/test_day.rb +121 -0
- data/lib/test/modules/time/test_month.rb +166 -0
- data/lib/test/modules/time/test_week.rb +201 -0
- data/lib/test/modules/time/test_year.rb +13 -0
- data/lib/week_of_month.rb +31 -34
- data/license +1 -1
- data/week_of_month.gemspec +5 -5
- metadata +21 -16
- data/lib/test/modules/test_constant.rb +0 -65
- data/lib/test/modules/test_day.rb +0 -184
- data/lib/test/modules/test_month.rb +0 -187
- data/lib/test/modules/test_week.rb +0 -245
- data/lib/test/modules/test_year.rb +0 -17
data/lib/modules/week.rb
CHANGED
@@ -4,7 +4,6 @@ RUBY_VERSION < '1.9' ? require('modules/constant') : require_relative('constant'
|
|
4
4
|
|
5
5
|
module WeekOfMonth
|
6
6
|
module Week
|
7
|
-
|
8
7
|
include WeekOfMonth::Constant
|
9
8
|
|
10
9
|
# returns week of month for a given date
|
@@ -12,8 +11,8 @@ module WeekOfMonth
|
|
12
11
|
# => 3
|
13
12
|
# @return [Fixnum]
|
14
13
|
def week_of_month
|
15
|
-
week_split.each_with_index do |o,i|
|
16
|
-
return (i + 1) if o.include?(
|
14
|
+
week_split.each_with_index do |o, i|
|
15
|
+
return (i + 1) if o.include?(day)
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
@@ -46,7 +45,7 @@ module WeekOfMonth
|
|
46
45
|
# => true
|
47
46
|
# @return [Boolean]
|
48
47
|
def first_week?
|
49
|
-
week_split[0].include?(
|
48
|
+
week_split[0].include?(day)
|
50
49
|
end
|
51
50
|
|
52
51
|
# checks whether the given day lies in second week of month
|
@@ -54,7 +53,7 @@ module WeekOfMonth
|
|
54
53
|
# => true
|
55
54
|
# @return [Boolean]
|
56
55
|
def second_week?
|
57
|
-
week_split[1].include?(
|
56
|
+
week_split[1].include?(day)
|
58
57
|
end
|
59
58
|
|
60
59
|
# checks whether the given day lies in last week of month
|
@@ -62,7 +61,7 @@ module WeekOfMonth
|
|
62
61
|
# => false
|
63
62
|
# @return [Boolean]
|
64
63
|
def last_week?
|
65
|
-
week_split.last.include?(
|
64
|
+
week_split.last.include?(day)
|
66
65
|
end
|
67
66
|
|
68
67
|
# returns total number of weeks in month
|
@@ -116,9 +115,9 @@ module WeekOfMonth
|
|
116
115
|
# Date.new(2012,11,30).week_of_month_in_fr
|
117
116
|
# => "Cinquième"
|
118
117
|
# @return [String]
|
119
|
-
constants.select{|x| x.to_s.match(
|
118
|
+
constants.select { |x| x.to_s.match('WEEK_OF_MONTH_IN_') }.each do |const|
|
120
119
|
define_method(const.to_s.downcase) do
|
121
|
-
eval "#{const
|
120
|
+
eval "#{const}[week_of_month]"
|
122
121
|
end
|
123
122
|
end
|
124
123
|
|
@@ -129,7 +128,7 @@ module WeekOfMonth
|
|
129
128
|
# => 5
|
130
129
|
# @return [Fixnum]
|
131
130
|
def days_past_in_week
|
132
|
-
|
131
|
+
to_date.cwday
|
133
132
|
end
|
134
133
|
|
135
134
|
# it returns days left in the week
|
@@ -149,7 +148,7 @@ module WeekOfMonth
|
|
149
148
|
# => 2012-11-29 23:59:55 +0530
|
150
149
|
# @return [Date || Time]
|
151
150
|
def beginning_of_week
|
152
|
-
self.class.new(year,month,current_week.detect {|i| !i.nil?})
|
151
|
+
self.class.new(year, month, current_week.detect { |i| !i.nil? })
|
153
152
|
end
|
154
153
|
|
155
154
|
# it returns date of the last day(saturday) of the week
|
@@ -159,13 +158,13 @@ module WeekOfMonth
|
|
159
158
|
# => 2012-11-30 00:00:02 +0530
|
160
159
|
# @return [Date || Time]
|
161
160
|
def end_of_week
|
162
|
-
if current_week.index(
|
163
|
-
self.class.new(year,month,current_week.last)
|
164
|
-
elsif current_week.index(
|
161
|
+
if current_week.index(day) == 6
|
162
|
+
self.class.new(year, month, current_week.last)
|
163
|
+
elsif current_week.index(day) < 6
|
165
164
|
if self.class == Date
|
166
|
-
self + (6 - current_week.index(
|
165
|
+
self + (6 - current_week.index(day))
|
167
166
|
elsif self.class == Time
|
168
|
-
self + (60 * 60 * 24
|
167
|
+
self + (60 * 60 * 24 * (6 - current_week.index(day)))
|
169
168
|
end
|
170
169
|
end
|
171
170
|
end
|
@@ -203,8 +202,7 @@ module WeekOfMonth
|
|
203
202
|
# => [7, 8, 9, 10, 11, 12, 13]
|
204
203
|
# @return [Array]
|
205
204
|
def current_week
|
206
|
-
week_split.select{|c| c.include?(
|
205
|
+
week_split.select { |c| c.include?(day) }.flatten
|
207
206
|
end
|
208
|
-
|
209
207
|
end
|
210
208
|
end
|
data/lib/modules/year.rb
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
module WeekOfMonth
|
4
4
|
module Year
|
5
|
-
|
6
5
|
def self.included(klass)
|
7
6
|
klass.extend(ClassMethods)
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
module ClassMethods
|
11
10
|
# @param[Date,Date]
|
12
11
|
# Date.years_between_dates(Date.new(2015,11,1),Date.new(2012,11,15))
|
@@ -15,10 +14,9 @@ module WeekOfMonth
|
|
15
14
|
# Time.years_between_dates(Time.new(2015,11,1),Time.new(2012,11,15))
|
16
15
|
# => 3
|
17
16
|
# @return [Fixnum]
|
18
|
-
def years_between_dates(date1,date2)
|
17
|
+
def years_between_dates(date1, date2)
|
19
18
|
(date1.year - date2.year).abs
|
20
19
|
end
|
21
20
|
end
|
22
|
-
|
23
21
|
end
|
24
|
-
end
|
22
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../../week_of_month')
|
6
|
+
|
7
|
+
class TestConstantForDate < Test::Unit::TestCase
|
8
|
+
def test_constants_present?
|
9
|
+
assert Date::WEEK_OF_MONTH_IN_ENG
|
10
|
+
|
11
|
+
assert Date::WEEK_OF_MONTH_IN_GER
|
12
|
+
|
13
|
+
assert Date::WEEK_OF_MONTH_IN_FR
|
14
|
+
|
15
|
+
assert Date::WEEK_OF_MONTH_IN_JA
|
16
|
+
|
17
|
+
assert Date::MONTH_WITH_DAY
|
18
|
+
|
19
|
+
assert Date::MONTH_WITH_SEQUENCE
|
20
|
+
|
21
|
+
assert Date::DAYS_IN_SEQUENCE
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_constants_value
|
25
|
+
assert_equal({ 1 => 'First', 2 => 'Second',
|
26
|
+
3 => 'Third', 4 => 'Fourth',
|
27
|
+
5 => 'Fifth', 6 => 'Sixth',
|
28
|
+
7 => 'Seventh' }, Date::WEEK_OF_MONTH_IN_ENG)
|
29
|
+
|
30
|
+
assert_equal({ 1 => 'Premier', 2 => 'Deuxième',
|
31
|
+
3 => 'Troisième', 4 => 'Quatrième',
|
32
|
+
5 => 'Cinquième', 6 => 'Sixième',
|
33
|
+
7 => 'Septième' }, Date::WEEK_OF_MONTH_IN_FR)
|
34
|
+
|
35
|
+
assert_equal({ 1 => 'First', 2 => 'Second',
|
36
|
+
3 => 'Dritten', 4 => 'Vierte',
|
37
|
+
5 => 'Fünfte', 6 => 'Sechste',
|
38
|
+
7 => 'siebte' }, Date::WEEK_OF_MONTH_IN_GER)
|
39
|
+
|
40
|
+
assert_equal({ 1 => '第一', 2 => '第二',
|
41
|
+
3 => '第三', 4 => '第四',
|
42
|
+
5 => '第五', 6 => '第六',
|
43
|
+
7 => '第七' }, Date::WEEK_OF_MONTH_IN_JA)
|
44
|
+
|
45
|
+
assert_equal({ january: 1, february: 2, march: 3,
|
46
|
+
april: 4, may: 5, june: 6, july: 7,
|
47
|
+
august: 8, september: 9, october: 10,
|
48
|
+
november: 11, december: 12 }, Date::MONTH_WITH_SEQUENCE)
|
49
|
+
|
50
|
+
assert_equal({ january: 31, february: 28, march: 31,
|
51
|
+
april: 30, may: 31, june: 30, july: 31,
|
52
|
+
august: 31, september: 30, october: 31,
|
53
|
+
november: 30, december: 31 }, Date::MONTH_WITH_DAY)
|
54
|
+
|
55
|
+
assert_equal(%w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday],
|
56
|
+
Date::DAYS_IN_SEQUENCE)
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../../week_of_month')
|
7
|
+
class TestDayForDate < Test::Unit::TestCase
|
8
|
+
def test_days_array
|
9
|
+
object = Date.new(2012, 2, 8)
|
10
|
+
|
11
|
+
days_array_for_february = [nil, nil, nil, 1, 2, 3, 4, 5,
|
12
|
+
6, 7, 8, 9, 10, 11, 12, 13, 14,
|
13
|
+
15, 16, 17, 18, 19, 20, 21, 22,
|
14
|
+
23, 24, 25, 26, 27, 28, 29]
|
15
|
+
assert_kind_of Array, object.days_array
|
16
|
+
assert_equal days_array_for_february, object.days_array
|
17
|
+
|
18
|
+
object = Date.new(2012, 7, 1)
|
19
|
+
days_array_for_july = [1, 2, 3, 4, 5, 6, 7,
|
20
|
+
8, 9, 10, 11, 12, 13,
|
21
|
+
14, 15, 16, 17, 18, 19,
|
22
|
+
20, 21, 22, 23, 24, 25,
|
23
|
+
26, 27, 28, 29, 30, 31]
|
24
|
+
assert_kind_of Array, object.days_array
|
25
|
+
assert_equal days_array_for_july, object.days_array
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_days_array_monday
|
29
|
+
WeekOfMonth.configuration.monday_active = true
|
30
|
+
object = Date.new(2014, 11, 3)
|
31
|
+
|
32
|
+
days_array_for_november = [nil, nil, nil, nil, nil, 1, 2,
|
33
|
+
3, 4, 5, 6, 7, 8, 9, 10, 11,
|
34
|
+
12, 13, 14, 15, 16, 17, 18,
|
35
|
+
19, 20, 21, 22, 23, 24, 25, 26,
|
36
|
+
27, 28, 29, 30]
|
37
|
+
assert_kind_of Array, object.days_array
|
38
|
+
assert_equal days_array_for_november, object.days_array
|
39
|
+
|
40
|
+
object = Date.new(2014, 12, 1)
|
41
|
+
days_array_for_december = [1, 2, 3, 4, 5, 6, 7,
|
42
|
+
8, 9, 10, 11, 12, 13,
|
43
|
+
14, 15, 16, 17, 18, 19,
|
44
|
+
20, 21, 22, 23, 24, 25,
|
45
|
+
26, 27, 28, 29, 30, 31]
|
46
|
+
assert_kind_of Array, object.days_array
|
47
|
+
assert_equal days_array_for_december, object.days_array
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_name_of_week_day
|
51
|
+
WeekOfMonth.configuration.monday_active = false
|
52
|
+
assert_equal 'Saturday', Date.new(2012, 12, 1).name_of_week_day
|
53
|
+
assert_equal 'Sunday', Date.new(2012, 12, 2).name_of_week_day
|
54
|
+
assert_equal 'Monday', Date.new(2012, 12, 3).name_of_week_day
|
55
|
+
assert_equal 'Tuesday', Date.new(2012, 12, 4).name_of_week_day
|
56
|
+
assert_equal 'Wednesday', Date.new(2012, 12, 5).name_of_week_day
|
57
|
+
assert_equal 'Thursday', Date.new(2012, 12, 6).name_of_week_day
|
58
|
+
assert_equal 'Friday', Date.new(2012, 12, 7).name_of_week_day
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_upcoming_sunday
|
62
|
+
assert_equal Date.new(2013, 1, 6), Date.new(2013, 1, 1).upcoming_sunday
|
63
|
+
assert_equal Date.new(2013, 1, 6), Date.new(2013, 1, 5).upcoming_sunday
|
64
|
+
assert_equal Date.new(2013, 1, 13), Date.new(2013, 1, 7).upcoming_sunday
|
65
|
+
assert_equal Date.new(2013, 1, 6), Date.new(2012, 12, 30).upcoming_sunday
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_upcoming_monday
|
69
|
+
assert_equal Date.new(2013, 1, 7), Date.new(2013, 1, 1).upcoming_monday
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_upcoming_tuesday
|
73
|
+
assert_equal Date.new(2013, 1, 8), Date.new(2013, 1, 1).upcoming_tuesday
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_upcoming_wednesday
|
77
|
+
assert_equal Date.new(2013, 1, 2), Date.new(2013, 1, 1).upcoming_wednesday
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_upcoming_thursday
|
81
|
+
assert_equal Date.new(2013, 1, 3), Date.new(2013, 1, 1).upcoming_thursday
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_upcoming_friday
|
85
|
+
assert_equal Date.new(2013, 1, 4), Date.new(2013, 1, 1).upcoming_friday
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_upcoming_saturday
|
89
|
+
assert_equal Date.new(2013, 1, 5), Date.new(2013, 1, 1).upcoming_saturday
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_previous_saturday
|
93
|
+
assert_equal Date.new(2012, 12, 29), Date.new(2013, 1, 1).previous_saturday
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_previous_friday
|
97
|
+
assert_equal Date.new(2012, 12, 28), Date.new(2013, 1, 1).previous_friday
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_previous_thursday
|
101
|
+
assert_equal Date.new(2012, 12, 27), Date.new(2013, 1, 1).previous_thursday
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_previous_wednesday
|
105
|
+
assert_equal Date.new(2012, 12, 26), Date.new(2013, 1, 1).previous_wednesday
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_previous_tuesday
|
109
|
+
assert_equal Date.new(2012, 12, 25), Date.new(2013, 1, 1).previous_tuesday
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_previous_monday
|
113
|
+
assert_equal Date.new(2012, 12, 31), Date.new(2013, 1, 1).previous_monday
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_previous_sunday
|
117
|
+
assert_equal Date.new(2012, 12, 30), Date.new(2013, 1, 1).previous_sunday
|
118
|
+
assert_equal Date.new(2012, 12, 30), Date.new(2013, 1, 1).previous_sunday
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_all_working_days_of_month
|
122
|
+
assert_equal [
|
123
|
+
Date.new(2013, 4, 30), Date.new(2013, 4, 29),
|
124
|
+
Date.new(2013, 4, 26), Date.new(2013, 4, 25), Date.new(2013, 4, 24), Date.new(2013, 4, 23), Date.new(2013, 4, 22),
|
125
|
+
Date.new(2013, 4, 19), Date.new(2013, 4, 18), Date.new(2013, 4, 17), Date.new(2013, 4, 16), Date.new(2013, 4, 15),
|
126
|
+
Date.new(2013, 4, 12), Date.new(2013, 4, 11), Date.new(2013, 4, 10), Date.new(2013, 4, 9), Date.new(2013, 4, 8),
|
127
|
+
Date.new(2013, 4, 5), Date.new(2013, 4, 4), Date.new(2013, 4, 3), Date.new(2013, 4, 2), Date.new(2013, 4, 1)
|
128
|
+
], Date.new(2013, 4, 1).all_working_days_of_month
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_all_non_week_days_of_month
|
132
|
+
assert_equal [
|
133
|
+
Date.new(2013, 4, 28), Date.new(2013, 4, 27),
|
134
|
+
Date.new(2013, 4, 21), Date.new(2013, 4, 20),
|
135
|
+
Date.new(2013, 4, 14), Date.new(2013, 4, 13),
|
136
|
+
Date.new(2013, 4, 7), Date.new(2013, 4, 6)
|
137
|
+
], Date.new(2013, 4, 1).all_non_week_days_of_month
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_first_working_day_of_the_month
|
141
|
+
assert_equal Date.new(2013, 1, 1), Date.new(2013, 1, 1).first_working_day_of_the_month
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
|
6
|
+
if RUBY_VERSION < '1.9'
|
7
|
+
require('lib/week_of_month')
|
8
|
+
else
|
9
|
+
require_relative('../../../week_of_month')
|
10
|
+
end
|
11
|
+
|
12
|
+
class TestMonthForDate < Test::Unit::TestCase
|
13
|
+
def test_month?
|
14
|
+
assert Date.new(2012, 1, 1).january?
|
15
|
+
|
16
|
+
assert Date.new(2012, 2, 1).february?
|
17
|
+
|
18
|
+
assert Date.new(2012, 3, 1).march?
|
19
|
+
|
20
|
+
assert Date.new(2012, 4, 1).april?
|
21
|
+
|
22
|
+
assert Date.new(2012, 5, 1).may?
|
23
|
+
|
24
|
+
assert Date.new(2012, 6, 1).june?
|
25
|
+
|
26
|
+
assert Date.new(2012, 7, 1).july?
|
27
|
+
|
28
|
+
assert Date.new(2012, 8, 1).august?
|
29
|
+
|
30
|
+
assert Date.new(2012, 9, 1).september?
|
31
|
+
|
32
|
+
assert Date.new(2012, 10, 1).october?
|
33
|
+
|
34
|
+
assert Date.new(2012, 11, 1).november?
|
35
|
+
|
36
|
+
assert Date.new(2012, 12, 1).december?
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_last_day_of_month
|
40
|
+
assert_equal 31, Date.new(2012, 1, 31).last_day_of_month
|
41
|
+
|
42
|
+
assert_equal 29, Date.new(2012, 2, 29).last_day_of_month
|
43
|
+
|
44
|
+
assert_equal 31, Date.new(2012, 3, 31).last_day_of_month
|
45
|
+
|
46
|
+
assert_equal 30, Date.new(2012, 4, 30).last_day_of_month
|
47
|
+
|
48
|
+
assert_equal 31, Date.new(2012, 5, 31).last_day_of_month
|
49
|
+
|
50
|
+
assert_equal 30, Date.new(2012, 6, 30).last_day_of_month
|
51
|
+
|
52
|
+
assert_equal 31, Date.new(2012, 7, 31).last_day_of_month
|
53
|
+
|
54
|
+
assert_equal 31, Date.new(2012, 8, 31).last_day_of_month
|
55
|
+
|
56
|
+
assert_equal 30, Date.new(2012, 9, 30).last_day_of_month
|
57
|
+
|
58
|
+
assert_equal 31, Date.new(2012, 10, 31).last_day_of_month
|
59
|
+
|
60
|
+
assert_equal 30, Date.new(2012, 11, 30).last_day_of_month
|
61
|
+
|
62
|
+
assert_equal 31, Date.new(2012, 12, 31).last_day_of_month
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_end_of_month
|
66
|
+
assert_equal Date.new(2012, 1, 31), Date.new(2012, 1, 1).end_of_month
|
67
|
+
|
68
|
+
assert_equal Date.new(2012, 2, 29), Date.new(2012, 2, 2).end_of_month
|
69
|
+
|
70
|
+
assert_equal Date.new(2012, 3, 31), Date.new(2012, 3, 1).end_of_month
|
71
|
+
|
72
|
+
assert_equal Date.new(2012, 4, 30), Date.new(2012, 4, 3).end_of_month
|
73
|
+
|
74
|
+
assert_equal Date.new(2012, 5, 31), Date.new(2012, 5, 1).end_of_month
|
75
|
+
|
76
|
+
assert_equal Date.new(2012, 6, 30), Date.new(2012, 6, 30).end_of_month
|
77
|
+
|
78
|
+
assert_equal Date.new(2012, 7, 31), Date.new(2012, 7, 1).end_of_month
|
79
|
+
|
80
|
+
assert_equal Date.new(2012, 8, 31), Date.new(2012, 8, 5).end_of_month
|
81
|
+
|
82
|
+
assert_equal Date.new(2012, 9, 30), Date.new(2012, 9, 2).end_of_month
|
83
|
+
|
84
|
+
assert_equal Date.new(2012, 10, 31), Date.new(2012, 10, 22).end_of_month
|
85
|
+
|
86
|
+
assert_equal Date.new(2012, 11, 30), Date.new(2012, 11, 10).end_of_month
|
87
|
+
|
88
|
+
assert_equal Date.new(2012, 12, 31), Date.new(2012, 12, 15).end_of_month
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_beginning_of_month
|
92
|
+
assert_equal Date.new(2012, 1, 1), Date.new(2012, 1, 31).beginning_of_month
|
93
|
+
|
94
|
+
assert_equal Date.new(2012, 2, 1), Date.new(2012, 2, 29).beginning_of_month
|
95
|
+
|
96
|
+
assert_equal Date.new(2012, 3, 1), Date.new(2012, 3, 31).beginning_of_month
|
97
|
+
|
98
|
+
assert_equal Date.new(2012, 4, 1), Date.new(2012, 4, 30).beginning_of_month
|
99
|
+
|
100
|
+
assert_equal Date.new(2012, 5, 1), Date.new(2012, 5, 31).beginning_of_month
|
101
|
+
|
102
|
+
assert_equal Date.new(2012, 6, 1), Date.new(2012, 6, 30).beginning_of_month
|
103
|
+
|
104
|
+
assert_equal Date.new(2012, 7, 1), Date.new(2012, 7, 31).beginning_of_month
|
105
|
+
|
106
|
+
assert_equal Date.new(2012, 8, 1), Date.new(2012, 8, 31).beginning_of_month
|
107
|
+
|
108
|
+
assert_equal Date.new(2012, 9, 1), Date.new(2012, 9, 30).beginning_of_month
|
109
|
+
|
110
|
+
assert_equal Date.new(2012, 10, 1), Date.new(2012, 10, 31).beginning_of_month
|
111
|
+
|
112
|
+
assert_equal Date.new(2012, 11, 1), Date.new(2012, 11, 30).beginning_of_month
|
113
|
+
|
114
|
+
assert_equal Date.new(2012, 12, 1), Date.new(2012, 12, 31).beginning_of_month
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_all_sundays_in_month
|
118
|
+
assert_equal [6, 13, 20, 27], Date.new(2013, 1, 1).all_sundays_in_month
|
119
|
+
assert_equal [3, 10, 17, 24], Date.new(2013, 2, 1).all_sundays_in_month
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_all_mondays_in_month
|
123
|
+
assert_equal [7, 14, 21, 28], Date.new(2013, 1, 1).all_mondays_in_month
|
124
|
+
assert_equal [4, 11, 18, 25], Date.new(2013, 2, 1).all_mondays_in_month
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_all_tuesdays_in_month
|
128
|
+
assert_equal [1, 8, 15, 22, 29], Date.new(2013, 1, 1).all_tuesdays_in_month
|
129
|
+
assert_equal [5, 12, 19, 26], Date.new(2013, 2, 1).all_tuesdays_in_month
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_all_wednesdays_in_month
|
133
|
+
assert_equal [2, 9, 16, 23, 30], Date.new(2013, 1, 1).all_wednesdays_in_month
|
134
|
+
assert_equal [6, 13, 20, 27], Date.new(2013, 2, 1).all_wednesdays_in_month
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_all_thursdays_in_month
|
138
|
+
assert_equal [3, 10, 17, 24, 31], Date.new(2013, 1, 1).all_thursdays_in_month
|
139
|
+
assert_equal [7, 14, 21, 28], Date.new(2013, 2, 1).all_thursdays_in_month
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_all_fridays_in_month
|
143
|
+
assert_equal [4, 11, 18, 25], Date.new(2013, 1, 1).all_fridays_in_month
|
144
|
+
assert_equal [1, 8, 15, 22], Date.new(2013, 2, 1).all_fridays_in_month
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_all_saturdays_in_month
|
148
|
+
assert_equal [5, 12, 19, 26], Date.new(2013, 1, 1).all_saturdays_in_month
|
149
|
+
assert_equal [2, 9, 16, 23], Date.new(2013, 2, 1).all_saturdays_in_month
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_name_of_month
|
153
|
+
assert_equal 'January', Date.new(2012, 1, 1).name_of_month
|
154
|
+
assert_equal 'February', Date.new(2012, 2, 1).name_of_month
|
155
|
+
assert_equal 'March', Date.new(2012, 3, 1).name_of_month
|
156
|
+
assert_equal 'April', Date.new(2012, 4, 1).name_of_month
|
157
|
+
assert_equal 'May', Date.new(2012, 5, 1).name_of_month
|
158
|
+
assert_equal 'June', Date.new(2012, 6, 1).name_of_month
|
159
|
+
assert_equal 'July', Date.new(2012, 7, 1).name_of_month
|
160
|
+
assert_equal 'August', Date.new(2012, 8, 1).name_of_month
|
161
|
+
assert_equal 'September', Date.new(2012, 9, 1).name_of_month
|
162
|
+
assert_equal 'October', Date.new(2012, 10, 1).name_of_month
|
163
|
+
assert_equal 'November', Date.new(2012, 11, 1).name_of_month
|
164
|
+
assert_equal 'December', Date.new(2012, 12, 1).name_of_month
|
165
|
+
end
|
166
|
+
end
|