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.
@@ -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 TestWeekForTime < Test::Unit::TestCase
8
+ def test_week_of_month
9
+ assert_equal 5, Time.new(2013, 1, 31).week_of_month
10
+
11
+ assert_equal 5, Time.new(2013, 2, 28).week_of_month
12
+
13
+ assert_equal 6, Time.new(2013, 3, 31).week_of_month
14
+
15
+ assert_equal 5, Time.new(2013, 4, 30).week_of_month
16
+
17
+ assert_equal 5, Time.new(2013, 5, 31).week_of_month
18
+
19
+ assert_equal 6, Time.new(2013, 6, 30).week_of_month
20
+
21
+ assert_equal 5, Time.new(2013, 7, 31).week_of_month
22
+
23
+ assert_equal 5, Time.new(2013, 8, 31).week_of_month
24
+
25
+ assert_equal 5, Time.new(2013, 9, 30).week_of_month
26
+
27
+ assert_equal 5, Time.new(2013, 10, 31).week_of_month
28
+
29
+ assert_equal 5, Time.new(2013, 11, 30).week_of_month
30
+
31
+ assert_equal 5, Time.new(2013, 12, 31).week_of_month
32
+ end
33
+
34
+ def test_general_week_of_month
35
+ assert_equal 4, Time.new(2013, 1, 31).general_week_of_month
36
+
37
+ assert_equal 4, Time.new(2013, 2, 28).general_week_of_month
38
+
39
+ assert_equal 5, Time.new(2013, 3, 31).general_week_of_month
40
+
41
+ assert_equal 4, Time.new(2013, 4, 30).general_week_of_month
42
+
43
+ assert_equal 4, Time.new(2013, 5, 31).general_week_of_month
44
+
45
+ assert_equal 5, Time.new(2013, 6, 30).general_week_of_month
46
+
47
+ assert_equal 4, Time.new(2013, 7, 31).general_week_of_month
48
+
49
+ assert_equal 4, Time.new(2013, 8, 31).general_week_of_month
50
+
51
+ assert_equal 5, Time.new(2013, 9, 30).general_week_of_month
52
+
53
+ assert_equal 4, Time.new(2013, 10, 31).general_week_of_month
54
+
55
+ assert_equal 4, Time.new(2013, 11, 30).general_week_of_month
56
+
57
+ assert_equal 5, Time.new(2013, 12, 31).general_week_of_month
58
+ end
59
+
60
+ def test_week_split
61
+ object = Time.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 = Time.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 Time.new(2012, 1, 1).first_week?
82
+ assert !Time.new(2012, 1, 31).first_week?
83
+ end
84
+
85
+ def test_second_week?
86
+ assert Time.new(2013, 1, 6).second_week?
87
+ assert !Time.new(2013, 1, 2).second_week?
88
+ end
89
+
90
+ def test_last_week?
91
+ assert Time.new(2012, 10, 31).last_week?
92
+ assert !Time.new(2012, 10, 20).last_week?
93
+ end
94
+
95
+ def test_total_weeks
96
+ assert_equal 5, Time.new(2012, 10, 31).total_weeks
97
+ assert_equal 6, Time.new(2012, 12, 20).total_weeks
98
+ end
99
+
100
+ def test_week_of_month_in_eng
101
+ assert_equal 'First', Time.new(2012, 12, 1).week_of_month_in_eng
102
+ assert_equal 'Second', Time.new(2012, 12, 4).week_of_month_in_eng
103
+ assert_equal 'Third', Time.new(2012, 12, 9).week_of_month_in_eng
104
+ assert_equal 'Fourth', Time.new(2012, 12, 16).week_of_month_in_eng
105
+ assert_equal 'Fifth', Time.new(2012, 12, 24).week_of_month_in_eng
106
+ assert_equal 'Sixth', Time.new(2012, 12, 31).week_of_month_in_eng
107
+ end
108
+
109
+ def test_week_of_month_in_fr
110
+ assert_equal 'Premier', Time.new(2012, 12, 1).week_of_month_in_fr
111
+ assert_equal 'Deuxième', Time.new(2012, 12, 4).week_of_month_in_fr
112
+ assert_equal 'Troisième', Time.new(2012, 12, 9).week_of_month_in_fr
113
+ assert_equal 'Quatrième', Time.new(2012, 12, 16).week_of_month_in_fr
114
+ assert_equal 'Cinquième', Time.new(2012, 12, 24).week_of_month_in_fr
115
+ assert_equal 'Sixième', Time.new(2012, 12, 31).week_of_month_in_fr
116
+ end
117
+
118
+ def test_week_of_month_in_ger
119
+ assert_equal 'First', Time.new(2012, 12, 1).week_of_month_in_ger
120
+ assert_equal 'Second', Time.new(2012, 12, 4).week_of_month_in_ger
121
+ assert_equal 'Dritten', Time.new(2012, 12, 9).week_of_month_in_ger
122
+ assert_equal 'Vierte', Time.new(2012, 12, 16).week_of_month_in_ger
123
+ assert_equal 'Fünfte', Time.new(2012, 12, 24).week_of_month_in_ger
124
+ assert_equal 'Sechste', Time.new(2012, 12, 31).week_of_month_in_ger
125
+ end
126
+
127
+ def test_week_of_month_in_ja
128
+ assert_equal '第一', Time.new(2012, 12, 1).week_of_month_in_ja
129
+ assert_equal '第二', Time.new(2012, 12, 4).week_of_month_in_ja
130
+ assert_equal '第三', Time.new(2012, 12, 9).week_of_month_in_ja
131
+ assert_equal '第四', Time.new(2012, 12, 16).week_of_month_in_ja
132
+ assert_equal '第五', Time.new(2012, 12, 24).week_of_month_in_ja
133
+ assert_equal '第六', Time.new(2012, 12, 31).week_of_month_in_ja
134
+ end
135
+
136
+ def test_week_end?
137
+ assert !Time.new(2012, 10, 1).week_end?
138
+ assert !Time.new(2012, 10, 31).week_end?
139
+ assert Time.new(2012, 10, 6).week_end?
140
+ assert Time.new(2012, 10, 7).week_end?
141
+ end
142
+
143
+ def test_working_day?
144
+ assert Time.new(2012, 10, 1).working_day?
145
+ assert Time.new(2012, 10, 31).working_day?
146
+ assert !Time.new(2012, 10, 6).working_day?
147
+ assert !Time.new(2012, 10, 7).working_day?
148
+ end
149
+
150
+ def test_days_past_in_week
151
+ assert_equal 2, Time.new(2013, 1, 1).days_past_in_week
152
+ end
153
+
154
+ def test_days_left_in_week
155
+ assert_equal 5, Time.new(2013, 1, 1).days_left_in_week
156
+ end
157
+
158
+ def test_beginning_of_week
159
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 25).beginning_of_week
160
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 26).beginning_of_week
161
+ assert_equal Time.new(2012, 11, 25), Time.new(2012, 11, 30).beginning_of_week
162
+ end
163
+
164
+ def test_end_of_week
165
+ assert_equal Time.new(2012, 12, 1), Time.new(2012, 12, 1).end_of_week
166
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 2).end_of_week
167
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 3).end_of_week
168
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 7).end_of_week
169
+ end
170
+
171
+ def test_next_week
172
+ assert_equal Time.new(2012, 12, 8), Time.new(2012, 12, 1).next_week
173
+ assert_equal Time.new(2012, 12, 22), Time.new(2012, 12, 15).next_week
174
+ assert_equal Time.new(2013, 1, 5), Time.new(2012, 12, 29).next_week
175
+ assert_equal Time.new(2012, 12, 26), Time.new(2012, 12, 19).next_week
176
+ end
177
+
178
+ def test_previous_week
179
+ assert_equal Time.new(2012, 12, 1), Time.new(2012, 12, 8).previous_week
180
+ assert_equal Time.new(2012, 12, 15), Time.new(2012, 12, 22).previous_week
181
+ assert_equal Time.new(2012, 12, 29), Time.new(2013, 1, 5).previous_week
182
+ assert_equal Time.new(2012, 12, 19), Time.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 Time.new(2012, 11, 19), Time.new(2012, 11, 25).beginning_of_week
188
+ assert_equal Time.new(2012, 11, 26), Time.new(2012, 11, 26).beginning_of_week
189
+ assert_equal Time.new(2012, 11, 26), Time.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 Time.new(2012, 12, 2), Time.new(2012, 12, 1).end_of_week
196
+ assert_equal Time.new(2012, 12, 2), Time.new(2012, 12, 2).end_of_week
197
+ assert_equal Time.new(2012, 12, 9), Time.new(2012, 12, 3).end_of_week
198
+ assert_equal Time.new(2012, 12, 9), Time.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 TestYearForTime < Test::Unit::TestCase
10
+ def test_years_between_dates
11
+ assert_equal 3, Time.years_between_dates(Time.new(2015, 11, 1), Time.new(2012, 11, 15))
12
+ end
13
+ end
@@ -1,7 +1,7 @@
1
1
  require 'date'
2
2
  require 'time'
3
3
 
4
- # supports both version of ruby 1.8 and 1.9 for loading a file.
4
+ # Supports both version of ruby 1.8 and 1.9 for loading a file.
5
5
  def require_file(file_name)
6
6
  RUBY_VERSION < '1.9' ? require(file_name) : require_relative(file_name)
7
7
  end
@@ -20,9 +20,7 @@ class Date
20
20
  end
21
21
 
22
22
  [Time, Date].each do |klass|
23
-
24
23
  klass.class_eval do
25
-
26
24
  unless method_defined?(:to_date)
27
25
  def to_date
28
26
  ::Date.new(year, month, day)
@@ -31,17 +29,35 @@ end
31
29
 
32
30
  # these methods are already defined in ruby 1.9 and above
33
31
  unless method_defined?(:sunday?)
34
- def sunday? ; self.wday == 0; end
35
- def monday? ; self.wday == 1; end
36
- def tuesday? ; self.wday == 2; end
37
- def wednesday? ; self.wday == 3; end
38
- def thursday? ; self.wday == 4; end
39
- def friday? ; self.wday == 5; end
40
- def saturday? ; self.wday == 6; end
41
- end
32
+ def sunday?
33
+ wday == 0
34
+ end
42
35
 
43
- end
36
+ def monday?
37
+ wday == 1
38
+ end
39
+
40
+ def tuesday?
41
+ wday == 2
42
+ end
43
+
44
+ def wednesday?
45
+ wday == 3
46
+ end
47
+
48
+ def thursday?
49
+ wday == 4
50
+ end
51
+
52
+ def friday?
53
+ wday == 5
54
+ end
44
55
 
56
+ def saturday?
57
+ wday == 6
58
+ end
59
+ end
60
+ end
45
61
  end
46
62
 
47
63
  class Time
@@ -51,11 +67,11 @@ class Time
51
67
  include WeekOfMonth::Year
52
68
 
53
69
  def leap?
54
- self.to_date.leap?
70
+ to_date.leap?
55
71
  end
56
72
 
57
73
  if RUBY_VERSION < '1.9'
58
- def self.new(year=Time.now.year, month=Time.now.month, day=Time.now.day, hour=Time.now.hour, min=Time.now.min, sec=Time.now.sec, millisecond=(Time.now.to_f * 1000.0).to_i)
74
+ def self.new(year = Time.now.year, month = Time.now.month, day = Time.now.day, hour = Time.now.hour, min = Time.now.min, sec = Time.now.sec, millisecond = (Time.now.to_f * 1000.0).to_i)
59
75
  Time.local(year, month, day, hour, min, sec, millisecond)
60
76
  end
61
77
  end
@@ -65,19 +81,13 @@ class Hash
65
81
  unless method_defined?(:key)
66
82
  def key(value)
67
83
  result = nil
68
- self.each do |k,v| result = k if v == value && result == nil; end if self.values.include?(value)
84
+ each { |k, v| result = k if v == value && result.nil?; } if values.include?(value)
69
85
  result
70
86
  end
71
87
  end
72
88
  end
73
89
 
74
90
  module WeekOfMonth
75
- class << self
76
- # A WeekOfMonth configuration object. Must act like a hash
77
- # See WeekOfMonth::Configuration.
78
- attr_writer :configuration
79
- end
80
-
81
91
  def self.first_day=(val)
82
92
  @first_day = DAYS_IN_SEQUENCE[val]
83
93
  end
@@ -85,17 +95,4 @@ module WeekOfMonth
85
95
  def self.first_day
86
96
  @first_day ||= 0
87
97
  end
88
-
89
- def self.configuration
90
- @configuration ||= Configuration.new
91
- end
92
-
93
- def self.configuration=(config)
94
- @configuration = config
95
- end
96
-
97
- def self.configure
98
- yield configuration
99
- end
100
98
  end
101
-
data/license CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2012-2016 Sachin Singh
3
+ Copyright (c) 2012-2017 Sachin Singh
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -7,14 +7,14 @@ Gem::Specification.new do |s|
7
7
  s.version = WeekOfMonth::VERSION
8
8
  s.summary = 'Week of month!'
9
9
  s.description = 'Its gives you week_of_month method on date and time objects, that returns week of the month.'
10
- s.authors = %w(Sachin87 Tommyixi Matt-- berikin pablorusso AstonJ swapnilchincholkar hitendrasingh ilake)
11
- s.email = %w(sachin@railsdeveloper.in sachin.y87@gmail.com singhsachin87@yahoo.com)
10
+ s.authors = %w[Sachin87 Tommyixi Matt-- berikin pablorusso AstonJ swapnilchincholkar hitendrasingh ilake fursich]
11
+ s.email = %w[sachin.y87@gmail.com]
12
12
  s.homepage = 'https://github.com/sachin87/week-of-month'
13
13
  s.files = `git ls-files`.split("\n").sort
14
14
  s.require_paths = ['lib']
15
15
  s.license = 'MIT'
16
16
 
17
- s.add_development_dependency 'rake', '>= 10.1.0'
18
- s.add_development_dependency 'bundler', '>= 1.0'
19
- s.add_development_dependency 'test-unit'
17
+ s.add_development_dependency 'rake', '>= 12.0.0'
18
+ s.add_development_dependency 'bundler', '>= 1.15.0'
19
+ s.add_development_dependency 'test-unit', '>= 3.2.3'
20
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: week_of_month
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3.4
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sachin87
@@ -13,10 +13,11 @@ authors:
13
13
  - swapnilchincholkar
14
14
  - hitendrasingh
15
15
  - ilake
16
+ - fursich
16
17
  autorequire:
17
18
  bindir: bin
18
19
  cert_chain: []
19
- date: 2016-01-02 00:00:00.000000000 Z
20
+ date: 2017-09-06 00:00:00.000000000 Z
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
22
23
  name: rake
@@ -24,54 +25,53 @@ dependencies:
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
27
- version: 10.1.0
28
+ version: 12.0.0
28
29
  type: :development
29
30
  prerelease: false
30
31
  version_requirements: !ruby/object:Gem::Requirement
31
32
  requirements:
32
33
  - - ">="
33
34
  - !ruby/object:Gem::Version
34
- version: 10.1.0
35
+ version: 12.0.0
35
36
  - !ruby/object:Gem::Dependency
36
37
  name: bundler
37
38
  requirement: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - ">="
40
41
  - !ruby/object:Gem::Version
41
- version: '1.0'
42
+ version: 1.15.0
42
43
  type: :development
43
44
  prerelease: false
44
45
  version_requirements: !ruby/object:Gem::Requirement
45
46
  requirements:
46
47
  - - ">="
47
48
  - !ruby/object:Gem::Version
48
- version: '1.0'
49
+ version: 1.15.0
49
50
  - !ruby/object:Gem::Dependency
50
51
  name: test-unit
51
52
  requirement: !ruby/object:Gem::Requirement
52
53
  requirements:
53
54
  - - ">="
54
55
  - !ruby/object:Gem::Version
55
- version: '0'
56
+ version: 3.2.3
56
57
  type: :development
57
58
  prerelease: false
58
59
  version_requirements: !ruby/object:Gem::Requirement
59
60
  requirements:
60
61
  - - ">="
61
62
  - !ruby/object:Gem::Version
62
- version: '0'
63
+ version: 3.2.3
63
64
  description: Its gives you week_of_month method on date and time objects, that returns
64
65
  week of the month.
65
66
  email:
66
- - sachin@railsdeveloper.in
67
67
  - sachin.y87@gmail.com
68
- - singhsachin87@yahoo.com
69
68
  executables: []
70
69
  extensions: []
71
70
  extra_rdoc_files: []
72
71
  files:
73
72
  - ".bundle/install.log"
74
73
  - ".gitignore"
74
+ - ".rvmrc"
75
75
  - Gemfile
76
76
  - Gemfile.lock
77
77
  - README.md
@@ -83,11 +83,16 @@ files:
83
83
  - lib/modules/version.rb
84
84
  - lib/modules/week.rb
85
85
  - lib/modules/year.rb
86
- - lib/test/modules/test_constant.rb
87
- - lib/test/modules/test_day.rb
88
- - lib/test/modules/test_month.rb
89
- - lib/test/modules/test_week.rb
90
- - lib/test/modules/test_year.rb
86
+ - lib/test/modules/date/test_constant.rb
87
+ - lib/test/modules/date/test_day.rb
88
+ - lib/test/modules/date/test_month.rb
89
+ - lib/test/modules/date/test_week.rb
90
+ - lib/test/modules/date/test_year.rb
91
+ - lib/test/modules/time/test_constant.rb
92
+ - lib/test/modules/time/test_day.rb
93
+ - lib/test/modules/time/test_month.rb
94
+ - lib/test/modules/time/test_week.rb
95
+ - lib/test/modules/time/test_year.rb
91
96
  - lib/week_of_month.rb
92
97
  - license
93
98
  - week_of_month.gemspec
@@ -111,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
116
  version: '0'
112
117
  requirements: []
113
118
  rubyforge_project:
114
- rubygems_version: 2.4.6
119
+ rubygems_version: 2.6.11
115
120
  signing_key:
116
121
  specification_version: 4
117
122
  summary: Week of month!