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
@@ -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
|