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