week_of_month 1.2.3.4 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
@@ -0,0 +1,201 @@
|
|
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 TestWeekForDate < Test::Unit::TestCase
|
8
|
+
def test_week_of_month
|
9
|
+
assert_equal 5, Date.new(2013, 1, 31).week_of_month
|
10
|
+
|
11
|
+
assert_equal 5, Date.new(2013, 2, 28).week_of_month
|
12
|
+
|
13
|
+
assert_equal 6, Date.new(2013, 3, 31).week_of_month
|
14
|
+
|
15
|
+
assert_equal 5, Date.new(2013, 4, 30).week_of_month
|
16
|
+
|
17
|
+
assert_equal 5, Date.new(2013, 5, 31).week_of_month
|
18
|
+
|
19
|
+
assert_equal 6, Date.new(2013, 6, 30).week_of_month
|
20
|
+
|
21
|
+
assert_equal 5, Date.new(2013, 7, 31).week_of_month
|
22
|
+
|
23
|
+
assert_equal 5, Date.new(2013, 8, 31).week_of_month
|
24
|
+
|
25
|
+
assert_equal 5, Date.new(2013, 9, 30).week_of_month
|
26
|
+
|
27
|
+
assert_equal 5, Date.new(2013, 10, 31).week_of_month
|
28
|
+
|
29
|
+
assert_equal 5, Date.new(2013, 11, 30).week_of_month
|
30
|
+
|
31
|
+
assert_equal 5, Date.new(2013, 12, 31).week_of_month
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_general_week_of_month
|
35
|
+
assert_equal 4, Date.new(2013, 1, 31).general_week_of_month
|
36
|
+
|
37
|
+
assert_equal 4, Date.new(2013, 2, 28).general_week_of_month
|
38
|
+
|
39
|
+
assert_equal 5, Date.new(2013, 3, 31).general_week_of_month
|
40
|
+
|
41
|
+
assert_equal 4, Date.new(2013, 4, 30).general_week_of_month
|
42
|
+
|
43
|
+
assert_equal 4, Date.new(2013, 5, 31).general_week_of_month
|
44
|
+
|
45
|
+
assert_equal 5, Date.new(2013, 6, 30).general_week_of_month
|
46
|
+
|
47
|
+
assert_equal 4, Date.new(2013, 7, 31).general_week_of_month
|
48
|
+
|
49
|
+
assert_equal 4, Date.new(2013, 8, 31).general_week_of_month
|
50
|
+
|
51
|
+
assert_equal 5, Date.new(2013, 9, 30).general_week_of_month
|
52
|
+
|
53
|
+
assert_equal 4, Date.new(2013, 10, 31).general_week_of_month
|
54
|
+
|
55
|
+
assert_equal 4, Date.new(2013, 11, 30).general_week_of_month
|
56
|
+
|
57
|
+
assert_equal 5, Date.new(2013, 12, 31).general_week_of_month
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_week_split
|
61
|
+
object = Date.new(2013, 1, 10)
|
62
|
+
split_for_january = [[nil, nil, 1, 2, 3, 4, 5],
|
63
|
+
[6, 7, 8, 9, 10, 11, 12],
|
64
|
+
[13, 14, 15, 16, 17, 18, 19],
|
65
|
+
[20, 21, 22, 23, 24, 25, 26],
|
66
|
+
[27, 28, 29, 30, 31]]
|
67
|
+
assert_kind_of Array, object.week_split
|
68
|
+
assert_equal split_for_january, object.week_split
|
69
|
+
|
70
|
+
object = Date.new(2013, 2, 15)
|
71
|
+
split_for_october = [[nil, nil, nil, nil, nil, 1, 2],
|
72
|
+
[3, 4, 5, 6, 7, 8, 9],
|
73
|
+
[10, 11, 12, 13, 14, 15, 16],
|
74
|
+
[17, 18, 19, 20, 21, 22, 23],
|
75
|
+
[24, 25, 26, 27, 28]]
|
76
|
+
assert_kind_of Array, object.week_split
|
77
|
+
assert_equal split_for_october, object.week_split
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_first_week?
|
81
|
+
assert Date.new(2012, 1, 1).first_week?
|
82
|
+
assert !Date.new(2012, 1, 31).first_week?
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_second_week?
|
86
|
+
assert Date.new(2013, 1, 6).second_week?
|
87
|
+
assert !Date.new(2013, 1, 2).second_week?
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_last_week?
|
91
|
+
assert Date.new(2012, 10, 31).last_week?
|
92
|
+
assert !Date.new(2012, 10, 20).last_week?
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_total_weeks
|
96
|
+
assert_equal 5, Date.new(2012, 10, 31).total_weeks
|
97
|
+
assert_equal 6, Date.new(2012, 12, 20).total_weeks
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_week_of_month_in_eng
|
101
|
+
assert_equal 'First', Date.new(2012, 12, 1).week_of_month_in_eng
|
102
|
+
assert_equal 'Second', Date.new(2012, 12, 4).week_of_month_in_eng
|
103
|
+
assert_equal 'Third', Date.new(2012, 12, 9).week_of_month_in_eng
|
104
|
+
assert_equal 'Fourth', Date.new(2012, 12, 16).week_of_month_in_eng
|
105
|
+
assert_equal 'Fifth', Date.new(2012, 12, 24).week_of_month_in_eng
|
106
|
+
assert_equal 'Sixth', Date.new(2012, 12, 31).week_of_month_in_eng
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_week_of_month_in_fr
|
110
|
+
assert_equal 'Premier', Date.new(2012, 12, 1).week_of_month_in_fr
|
111
|
+
assert_equal 'Deuxième', Date.new(2012, 12, 4).week_of_month_in_fr
|
112
|
+
assert_equal 'Troisième', Date.new(2012, 12, 9).week_of_month_in_fr
|
113
|
+
assert_equal 'Quatrième', Date.new(2012, 12, 16).week_of_month_in_fr
|
114
|
+
assert_equal 'Cinquième', Date.new(2012, 12, 24).week_of_month_in_fr
|
115
|
+
assert_equal 'Sixième', Date.new(2012, 12, 31).week_of_month_in_fr
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_week_of_month_in_ger
|
119
|
+
assert_equal 'First', Date.new(2012, 12, 1).week_of_month_in_ger
|
120
|
+
assert_equal 'Second', Date.new(2012, 12, 4).week_of_month_in_ger
|
121
|
+
assert_equal 'Dritten', Date.new(2012, 12, 9).week_of_month_in_ger
|
122
|
+
assert_equal 'Vierte', Date.new(2012, 12, 16).week_of_month_in_ger
|
123
|
+
assert_equal 'Fünfte', Date.new(2012, 12, 24).week_of_month_in_ger
|
124
|
+
assert_equal 'Sechste', Date.new(2012, 12, 31).week_of_month_in_ger
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_week_of_month_in_ja
|
128
|
+
assert_equal '第一', Date.new(2012, 12, 1).week_of_month_in_ja
|
129
|
+
assert_equal '第二', Date.new(2012, 12, 4).week_of_month_in_ja
|
130
|
+
assert_equal '第三', Date.new(2012, 12, 9).week_of_month_in_ja
|
131
|
+
assert_equal '第四', Date.new(2012, 12, 16).week_of_month_in_ja
|
132
|
+
assert_equal '第五', Date.new(2012, 12, 24).week_of_month_in_ja
|
133
|
+
assert_equal '第六', Date.new(2012, 12, 31).week_of_month_in_ja
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_week_end?
|
137
|
+
assert !Date.new(2012, 10, 1).week_end?
|
138
|
+
assert !Date.new(2012, 10, 31).week_end?
|
139
|
+
assert Date.new(2012, 10, 6).week_end?
|
140
|
+
assert Date.new(2012, 10, 7).week_end?
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_working_day?
|
144
|
+
assert Date.new(2012, 10, 1).working_day?
|
145
|
+
assert Date.new(2012, 10, 31).working_day?
|
146
|
+
assert !Date.new(2012, 10, 6).working_day?
|
147
|
+
assert !Date.new(2012, 10, 7).working_day?
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_days_past_in_week
|
151
|
+
assert_equal 2, Date.new(2013, 1, 1).days_past_in_week
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_days_left_in_week
|
155
|
+
assert_equal 5, Date.new(2013, 1, 1).days_left_in_week
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_beginning_of_week
|
159
|
+
assert_equal Date.new(2012, 11, 25), Date.new(2012, 11, 25).beginning_of_week
|
160
|
+
assert_equal Date.new(2012, 11, 25), Date.new(2012, 11, 26).beginning_of_week
|
161
|
+
assert_equal Date.new(2012, 11, 25), Date.new(2012, 11, 30).beginning_of_week
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_end_of_week
|
165
|
+
assert_equal Date.new(2012, 12, 1), Date.new(2012, 12, 1).end_of_week
|
166
|
+
assert_equal Date.new(2012, 12, 8), Date.new(2012, 12, 2).end_of_week
|
167
|
+
assert_equal Date.new(2012, 12, 8), Date.new(2012, 12, 3).end_of_week
|
168
|
+
assert_equal Date.new(2012, 12, 8), Date.new(2012, 12, 7).end_of_week
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_next_week
|
172
|
+
assert_equal Date.new(2012, 12, 8), Date.new(2012, 12, 1).next_week
|
173
|
+
assert_equal Date.new(2012, 12, 22), Date.new(2012, 12, 15).next_week
|
174
|
+
assert_equal Date.new(2013, 1, 5), Date.new(2012, 12, 29).next_week
|
175
|
+
assert_equal Date.new(2012, 12, 26), Date.new(2012, 12, 19).next_week
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_previous_week
|
179
|
+
assert_equal Date.new(2012, 12, 1), Date.new(2012, 12, 8).previous_week
|
180
|
+
assert_equal Date.new(2012, 12, 15), Date.new(2012, 12, 22).previous_week
|
181
|
+
assert_equal Date.new(2012, 12, 29), Date.new(2013, 1, 5).previous_week
|
182
|
+
assert_equal Date.new(2012, 12, 19), Date.new(2012, 12, 26).previous_week
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_monday_configured_beginning_of_week
|
186
|
+
WeekOfMonth.configuration.monday_active = true
|
187
|
+
assert_equal Date.new(2012, 11, 19), Date.new(2012, 11, 25).beginning_of_week
|
188
|
+
assert_equal Date.new(2012, 11, 26), Date.new(2012, 11, 26).beginning_of_week
|
189
|
+
assert_equal Date.new(2012, 11, 26), Date.new(2012, 11, 30).beginning_of_week
|
190
|
+
WeekOfMonth.configuration.monday_active = false
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_monday_configured_end_of_week
|
194
|
+
WeekOfMonth.configuration.monday_active = true
|
195
|
+
assert_equal Date.new(2012, 12, 2), Date.new(2012, 12, 1).end_of_week
|
196
|
+
assert_equal Date.new(2012, 12, 2), Date.new(2012, 12, 2).end_of_week
|
197
|
+
assert_equal Date.new(2012, 12, 9), Date.new(2012, 12, 3).end_of_week
|
198
|
+
assert_equal Date.new(2012, 12, 9), Date.new(2012, 12, 7).end_of_week
|
199
|
+
WeekOfMonth.configuration.monday_active = false
|
200
|
+
end
|
201
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
# @author Sachin Singh
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
RUBY_VERSION < '1.9' ? require('lib/week_of_month') : require_relative('../../../week_of_month')
|
8
|
+
|
9
|
+
class TestYearForDate < Test::Unit::TestCase
|
10
|
+
def test_years_between_dates
|
11
|
+
assert_equal 3, Date.years_between_dates(Date.new(2015, 11, 1), Date.new(2012, 11, 15))
|
12
|
+
end
|
13
|
+
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 TestConstantForTime < Test::Unit::TestCase
|
8
|
+
def test_constants_present?
|
9
|
+
assert Time::WEEK_OF_MONTH_IN_ENG
|
10
|
+
|
11
|
+
assert Time::WEEK_OF_MONTH_IN_GER
|
12
|
+
|
13
|
+
assert Time::WEEK_OF_MONTH_IN_FR
|
14
|
+
|
15
|
+
assert Time::WEEK_OF_MONTH_IN_JA
|
16
|
+
|
17
|
+
assert Time::MONTH_WITH_DAY
|
18
|
+
|
19
|
+
assert Time::MONTH_WITH_SEQUENCE
|
20
|
+
|
21
|
+
assert Time::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' }, Time::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' }, Time::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' }, Time::WEEK_OF_MONTH_IN_GER)
|
39
|
+
|
40
|
+
assert_equal({ 1 => '第一', 2 => '第二',
|
41
|
+
3 => '第三', 4 => '第四',
|
42
|
+
5 => '第五', 6 => '第六',
|
43
|
+
7 => '第七' }, Time::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 }, Time::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 }, Time::MONTH_WITH_DAY)
|
54
|
+
|
55
|
+
assert_equal(%w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday],
|
56
|
+
Time::DAYS_IN_SEQUENCE)
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,121 @@
|
|
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 TestDayForTime < Test::Unit::TestCase
|
8
|
+
def test_days_array
|
9
|
+
object = Time.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 = Time.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 = Time.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 = Time.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', Time.new(2012, 12, 1).name_of_week_day
|
53
|
+
assert_equal 'Sunday', Time.new(2012, 12, 2).name_of_week_day
|
54
|
+
assert_equal 'Monday', Time.new(2012, 12, 3).name_of_week_day
|
55
|
+
assert_equal 'Tuesday', Time.new(2012, 12, 4).name_of_week_day
|
56
|
+
assert_equal 'Wednesday', Time.new(2012, 12, 5).name_of_week_day
|
57
|
+
assert_equal 'Thursday', Time.new(2012, 12, 6).name_of_week_day
|
58
|
+
assert_equal 'Friday', Time.new(2012, 12, 7).name_of_week_day
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_upcoming_sunday
|
62
|
+
assert_equal Time.new(2013, 1, 6), Time.new(2013, 1, 1).upcoming_sunday
|
63
|
+
assert_equal Time.new(2013, 1, 6), Time.new(2013, 1, 5).upcoming_sunday
|
64
|
+
assert_equal Time.new(2013, 1, 13), Time.new(2013, 1, 7).upcoming_sunday
|
65
|
+
assert_equal Time.new(2013, 1, 6), Time.new(2012, 12, 30).upcoming_sunday
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_upcoming_monday
|
69
|
+
assert_equal Time.new(2013, 1, 7), Time.new(2013, 1, 1).upcoming_monday
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_upcoming_tuesday
|
73
|
+
assert_equal Time.new(2013, 1, 8), Time.new(2013, 1, 1).upcoming_tuesday
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_upcoming_wednesday
|
77
|
+
assert_equal Time.new(2013, 1, 2), Time.new(2013, 1, 1).upcoming_wednesday
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_upcoming_thursday
|
81
|
+
assert_equal Time.new(2013, 1, 3), Time.new(2013, 1, 1).upcoming_thursday
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_upcoming_friday
|
85
|
+
assert_equal Time.new(2013, 1, 4), Time.new(2013, 1, 1).upcoming_friday
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_upcoming_saturday
|
89
|
+
assert_equal Time.new(2013, 1, 5), Time.new(2013, 1, 1).upcoming_saturday
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_previous_saturday
|
93
|
+
assert_equal Time.new(2012, 12, 29), Time.new(2013, 1, 1).previous_saturday
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_previous_friday
|
97
|
+
assert_equal Time.new(2012, 12, 28), Time.new(2013, 1, 1).previous_friday
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_previous_thursday
|
101
|
+
assert_equal Time.new(2012, 12, 27), Time.new(2013, 1, 1).previous_thursday
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_previous_wednesday
|
105
|
+
assert_equal Time.new(2012, 12, 26), Time.new(2013, 1, 1).previous_wednesday
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_previous_tuesday
|
109
|
+
assert_equal Time.new(2012, 12, 25), Time.new(2013, 1, 1).previous_tuesday
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_previous_monday
|
113
|
+
assert_equal Time.new(2012, 12, 31), Time.new(2013, 1, 1).previous_monday
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_previous_sunday
|
117
|
+
assert_equal Time.new(2012, 12, 30), Time.new(2013, 1, 1).previous_sunday
|
118
|
+
assert_equal Time.new(2012, 12, 30), Time.new(2013, 1, 1).previous_sunday
|
119
|
+
end
|
120
|
+
|
121
|
+
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 TestMonthForTime < Test::Unit::TestCase
|
13
|
+
def test_month?
|
14
|
+
assert Time.new(2012, 1, 1).january?
|
15
|
+
|
16
|
+
assert Time.new(2012, 2, 1).february?
|
17
|
+
|
18
|
+
assert Time.new(2012, 3, 1).march?
|
19
|
+
|
20
|
+
assert Time.new(2012, 4, 1).april?
|
21
|
+
|
22
|
+
assert Time.new(2012, 5, 1).may?
|
23
|
+
|
24
|
+
assert Time.new(2012, 6, 1).june?
|
25
|
+
|
26
|
+
assert Time.new(2012, 7, 1).july?
|
27
|
+
|
28
|
+
assert Time.new(2012, 8, 1).august?
|
29
|
+
|
30
|
+
assert Time.new(2012, 9, 1).september?
|
31
|
+
|
32
|
+
assert Time.new(2012, 10, 1).october?
|
33
|
+
|
34
|
+
assert Time.new(2012, 11, 1).november?
|
35
|
+
|
36
|
+
assert Time.new(2012, 12, 1).december?
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_last_day_of_month
|
40
|
+
assert_equal 31, Time.new(2012, 1, 31).last_day_of_month
|
41
|
+
|
42
|
+
assert_equal 29, Time.new(2012, 2, 29).last_day_of_month
|
43
|
+
|
44
|
+
assert_equal 31, Time.new(2012, 3, 31).last_day_of_month
|
45
|
+
|
46
|
+
assert_equal 30, Time.new(2012, 4, 30).last_day_of_month
|
47
|
+
|
48
|
+
assert_equal 31, Time.new(2012, 5, 31).last_day_of_month
|
49
|
+
|
50
|
+
assert_equal 30, Time.new(2012, 6, 30).last_day_of_month
|
51
|
+
|
52
|
+
assert_equal 31, Time.new(2012, 7, 31).last_day_of_month
|
53
|
+
|
54
|
+
assert_equal 31, Time.new(2012, 8, 31).last_day_of_month
|
55
|
+
|
56
|
+
assert_equal 30, Time.new(2012, 9, 30).last_day_of_month
|
57
|
+
|
58
|
+
assert_equal 31, Time.new(2012, 10, 31).last_day_of_month
|
59
|
+
|
60
|
+
assert_equal 30, Time.new(2012, 11, 30).last_day_of_month
|
61
|
+
|
62
|
+
assert_equal 31, Time.new(2012, 12, 31).last_day_of_month
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_end_of_month
|
66
|
+
assert_equal Time.new(2012, 1, 31), Time.new(2012, 1, 1).end_of_month
|
67
|
+
|
68
|
+
assert_equal Time.new(2012, 2, 29), Time.new(2012, 2, 2).end_of_month
|
69
|
+
|
70
|
+
assert_equal Time.new(2012, 3, 31), Time.new(2012, 3, 1).end_of_month
|
71
|
+
|
72
|
+
assert_equal Time.new(2012, 4, 30), Time.new(2012, 4, 3).end_of_month
|
73
|
+
|
74
|
+
assert_equal Time.new(2012, 5, 31), Time.new(2012, 5, 1).end_of_month
|
75
|
+
|
76
|
+
assert_equal Time.new(2012, 6, 30), Time.new(2012, 6, 30).end_of_month
|
77
|
+
|
78
|
+
assert_equal Time.new(2012, 7, 31), Time.new(2012, 7, 1).end_of_month
|
79
|
+
|
80
|
+
assert_equal Time.new(2012, 8, 31), Time.new(2012, 8, 5).end_of_month
|
81
|
+
|
82
|
+
assert_equal Time.new(2012, 9, 30), Time.new(2012, 9, 2).end_of_month
|
83
|
+
|
84
|
+
assert_equal Time.new(2012, 10, 31), Time.new(2012, 10, 22).end_of_month
|
85
|
+
|
86
|
+
assert_equal Time.new(2012, 11, 30), Time.new(2012, 11, 10).end_of_month
|
87
|
+
|
88
|
+
assert_equal Time.new(2012, 12, 31), Time.new(2012, 12, 15).end_of_month
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_beginning_of_month
|
92
|
+
assert_equal Time.new(2012, 1, 1), Time.new(2012, 1, 31).beginning_of_month
|
93
|
+
|
94
|
+
assert_equal Time.new(2012, 2, 1), Time.new(2012, 2, 29).beginning_of_month
|
95
|
+
|
96
|
+
assert_equal Time.new(2012, 3, 1), Time.new(2012, 3, 31).beginning_of_month
|
97
|
+
|
98
|
+
assert_equal Time.new(2012, 4, 1), Time.new(2012, 4, 30).beginning_of_month
|
99
|
+
|
100
|
+
assert_equal Time.new(2012, 5, 1), Time.new(2012, 5, 31).beginning_of_month
|
101
|
+
|
102
|
+
assert_equal Time.new(2012, 6, 1), Time.new(2012, 6, 30).beginning_of_month
|
103
|
+
|
104
|
+
assert_equal Time.new(2012, 7, 1), Time.new(2012, 7, 31).beginning_of_month
|
105
|
+
|
106
|
+
assert_equal Time.new(2012, 8, 1), Time.new(2012, 8, 31).beginning_of_month
|
107
|
+
|
108
|
+
assert_equal Time.new(2012, 9, 1), Time.new(2012, 9, 30).beginning_of_month
|
109
|
+
|
110
|
+
assert_equal Time.new(2012, 10, 1), Time.new(2012, 10, 31).beginning_of_month
|
111
|
+
|
112
|
+
assert_equal Time.new(2012, 11, 1), Time.new(2012, 11, 30).beginning_of_month
|
113
|
+
|
114
|
+
assert_equal Time.new(2012, 12, 1), Time.new(2012, 12, 31).beginning_of_month
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_all_sundays_in_month
|
118
|
+
assert_equal [6, 13, 20, 27], Time.new(2013, 1, 1).all_sundays_in_month
|
119
|
+
assert_equal [3, 10, 17, 24], Time.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], Time.new(2013, 1, 1).all_mondays_in_month
|
124
|
+
assert_equal [4, 11, 18, 25], Time.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], Time.new(2013, 1, 1).all_tuesdays_in_month
|
129
|
+
assert_equal [5, 12, 19, 26], Time.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], Time.new(2013, 1, 1).all_wednesdays_in_month
|
134
|
+
assert_equal [6, 13, 20, 27], Time.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], Time.new(2013, 1, 1).all_thursdays_in_month
|
139
|
+
assert_equal [7, 14, 21, 28], Time.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], Time.new(2013, 1, 1).all_fridays_in_month
|
144
|
+
assert_equal [1, 8, 15, 22], Time.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], Time.new(2013, 1, 1).all_saturdays_in_month
|
149
|
+
assert_equal [2, 9, 16, 23], Time.new(2013, 2, 1).all_saturdays_in_month
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_name_of_month
|
153
|
+
assert_equal 'January', Time.new(2012, 1, 1).name_of_month
|
154
|
+
assert_equal 'February', Time.new(2012, 2, 1).name_of_month
|
155
|
+
assert_equal 'March', Time.new(2012, 3, 1).name_of_month
|
156
|
+
assert_equal 'April', Time.new(2012, 4, 1).name_of_month
|
157
|
+
assert_equal 'May', Time.new(2012, 5, 1).name_of_month
|
158
|
+
assert_equal 'June', Time.new(2012, 6, 1).name_of_month
|
159
|
+
assert_equal 'July', Time.new(2012, 7, 1).name_of_month
|
160
|
+
assert_equal 'August', Time.new(2012, 8, 1).name_of_month
|
161
|
+
assert_equal 'September', Time.new(2012, 9, 1).name_of_month
|
162
|
+
assert_equal 'October', Time.new(2012, 10, 1).name_of_month
|
163
|
+
assert_equal 'November', Time.new(2012, 11, 1).name_of_month
|
164
|
+
assert_equal 'December', Time.new(2012, 12, 1).name_of_month
|
165
|
+
end
|
166
|
+
end
|