rrule 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +25 -0
  4. data/.travis.yml +6 -1
  5. data/Gemfile +9 -0
  6. data/Rakefile +9 -3
  7. data/lib/rrule.rb +4 -0
  8. data/lib/rrule/context.rb +5 -3
  9. data/lib/rrule/filters/by_month.rb +2 -0
  10. data/lib/rrule/filters/by_month_day.rb +2 -0
  11. data/lib/rrule/filters/by_week_day.rb +2 -0
  12. data/lib/rrule/filters/by_week_number.rb +2 -0
  13. data/lib/rrule/filters/by_year_day.rb +3 -1
  14. data/lib/rrule/frequencies/daily.rb +2 -0
  15. data/lib/rrule/frequencies/frequency.rb +4 -12
  16. data/lib/rrule/frequencies/monthly.rb +2 -0
  17. data/lib/rrule/frequencies/simple_weekly.rb +6 -6
  18. data/lib/rrule/frequencies/weekly.rb +2 -0
  19. data/lib/rrule/frequencies/yearly.rb +2 -0
  20. data/lib/rrule/generators/all_occurrences.rb +2 -0
  21. data/lib/rrule/generators/by_set_position.rb +2 -0
  22. data/lib/rrule/generators/generator.rb +3 -1
  23. data/lib/rrule/rule.rb +18 -33
  24. data/lib/rrule/version.rb +5 -0
  25. data/lib/rrule/weekday.rb +3 -1
  26. data/rrule.gemspec +16 -10
  27. data/scripts/benchmark.rb +3 -1
  28. metadata +13 -56
  29. data/spec/context_spec.rb +0 -261
  30. data/spec/filters/by_month_day_spec.rb +0 -35
  31. data/spec/filters/by_month_spec.rb +0 -35
  32. data/spec/filters/by_week_day_spec.rb +0 -35
  33. data/spec/filters/by_week_number_spec.rb +0 -41
  34. data/spec/filters/by_year_day_spec.rb +0 -35
  35. data/spec/frequencies/daily_spec.rb +0 -62
  36. data/spec/frequencies/monthly_spec.rb +0 -63
  37. data/spec/frequencies/simple_weekly_spec.rb +0 -32
  38. data/spec/frequencies/weekly_spec.rb +0 -92
  39. data/spec/frequencies/yearly_spec.rb +0 -54
  40. data/spec/generators/all_occurrences_spec.rb +0 -44
  41. data/spec/generators/by_set_position_spec.rb +0 -39
  42. data/spec/generators/generator_spec.rb +0 -110
  43. data/spec/rule_spec.rb +0 -2338
  44. data/spec/spec_helper.rb +0 -23
  45. data/spec/weekday_spec.rb +0 -34
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RRule::BySetPosition do
4
- let(:context) do
5
- RRule::Context.new(
6
- { interval: 1, wkst: 1 },
7
- Time.parse('Wed Jan 1 00:00:00 PST 1997'),
8
- 'America/Los_Angeles'
9
- )
10
- end
11
-
12
- around(:each) do |example|
13
- Time.use_zone('America/Los_Angeles') do
14
- example.run
15
- end
16
- end
17
-
18
- before(:each) { context.rebuild(1997, 1) }
19
-
20
- describe '#combine_dates_and_times' do
21
- subject { described_class.new(positions, context).combine_dates_and_times(dates, times)}
22
-
23
- context 'with a single set position' do
24
- let(:positions) { [0] }
25
- let(:dates) { [0, 1, 2, 3, 4] }
26
- let(:times) { [{ hour: 12, minute: 30, second: 15 }] }
27
-
28
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:30:15 PST 1997')] }
29
- end
30
-
31
- context 'with multiple set positions' do
32
- let(:positions) { [1, 3] }
33
- let(:dates) { [0, 1, 2, 3, 4] }
34
- let(:times) { [{ hour: 12, minute: 30, second: 15 }] }
35
-
36
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:30:15 PST 1997'), Time.parse('Fri Jan 3 12:30:15 PST 1997')] }
37
- end
38
- end
39
- end
@@ -1,110 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RRule::Generator do
4
- let(:context) do
5
- RRule::Context.new(
6
- { interval: 1, wkst: 1 },
7
- Time.parse('Wed Jan 1 00:00:00 PST 1997'),
8
- 'America/Los_Angeles'
9
- )
10
- end
11
-
12
- around(:each) do |example|
13
- Time.use_zone('America/Los_Angeles') do
14
- example.run
15
- end
16
- end
17
-
18
- before(:each) { context.rebuild(1997, 1) }
19
-
20
- describe '#process_timeset' do
21
- describe "single timeset" do
22
- subject { described_class.new(context).process_timeset(date, timeset)}
23
-
24
- context 'with a timeset with only 1 set' do
25
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
26
- let(:timeset) { [{ hour: 12, minute: 30, second: 15 }] }
27
-
28
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:30:15 PST 1997')] }
29
- end
30
-
31
- context 'with multiple hours in the timeset' do
32
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
33
- let(:timeset) { [{ hour: [12, 15], minute: 30, second: 15 }] }
34
-
35
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:30:15 PST 1997'), Time.parse('Wed Jan 1 15:30:15 PST 1997')] }
36
- end
37
-
38
- context 'with multiple minutes in the timeset' do
39
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
40
- let(:timeset) { [{ hour: [12], minute: [15, 30], second: 15 }] }
41
-
42
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:15:15 PST 1997'), Time.parse('Wed Jan 1 12:30:15 PST 1997')] }
43
- end
44
-
45
- context 'with multiple seconds in the timeset' do
46
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
47
- let(:timeset) { [{ hour: [12], minute: [30], second: [15, 59] }] }
48
-
49
- it { is_expected.to match_array [Time.parse('Wed Jan 1 12:30:15 PST 1997'), Time.parse('Wed Jan 1 12:30:59 PST 1997')] }
50
- end
51
-
52
- context 'with multiple hours, minutes, and seconds in the timeset' do
53
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
54
- let(:timeset) { [{ hour: [12, 20], minute: [30, 55], second: [15, 59] }] }
55
-
56
- it { is_expected.to eq [
57
- Time.parse('Wed Jan 1 12:30:15 PST 1997'),
58
- Time.parse('Wed Jan 1 12:30:59 PST 1997'),
59
- Time.parse('Wed Jan 1 12:55:15 PST 1997'),
60
- Time.parse('Wed Jan 1 12:55:59 PST 1997'),
61
- Time.parse('Wed Jan 1 20:30:15 PST 1997'),
62
- Time.parse('Wed Jan 1 20:30:59 PST 1997'),
63
- Time.parse('Wed Jan 1 20:55:15 PST 1997'),
64
- Time.parse('Wed Jan 1 20:55:59 PST 1997'),
65
- ] }
66
- end
67
-
68
- context 'with multiple hours, minutes, and seconds in the timeset, unsorted' do
69
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
70
- let(:timeset) { [{ hour: [20, 12], minute: [55, 30], second: [59, 15] }] }
71
-
72
- it { is_expected.to eq [
73
- Time.parse('Wed Jan 1 12:30:15 PST 1997'),
74
- Time.parse('Wed Jan 1 12:30:59 PST 1997'),
75
- Time.parse('Wed Jan 1 12:55:15 PST 1997'),
76
- Time.parse('Wed Jan 1 12:55:59 PST 1997'),
77
- Time.parse('Wed Jan 1 20:30:15 PST 1997'),
78
- Time.parse('Wed Jan 1 20:30:59 PST 1997'),
79
- Time.parse('Wed Jan 1 20:55:15 PST 1997'),
80
- Time.parse('Wed Jan 1 20:55:59 PST 1997'),
81
- ] }
82
- end
83
- end
84
- end
85
-
86
- describe "multiple timesets" do
87
- subject { described_class.new(context).process_timeset(date, timeset)}
88
-
89
- context 'with multiple timsets' do
90
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
91
- let(:timeset) { [{ hour: 12, minute: 30, second: 15 }, { hour: 18, minute: 45, second: 20 }] }
92
-
93
- it { is_expected.to eq [Time.parse('Wed Jan 1 12:30:15 PST 1997'), Time.parse('Wed Jan 1 18:45:20 PST 1997')] }
94
- end
95
-
96
- context 'with multiple timsets with multiple hour sets' do
97
- let(:date) { Time.parse('Wed Jan 1 00:11:22 PST 1997') }
98
- let(:timeset) { [{ hour: [12, 20], minute: 30, second: [15, 45] }, { hour: 18, minute: [22, 45], second: 20 }] }
99
-
100
- it { is_expected.to eq [
101
- Time.parse('Wed Jan 1 12:30:15 PST 1997'),
102
- Time.parse('Wed Jan 1 12:30:45 PST 1997'),
103
- Time.parse('Wed Jan 1 20:30:15 PST 1997'),
104
- Time.parse('Wed Jan 1 20:30:45 PST 1997'),
105
- Time.parse('Wed Jan 1 18:22:20 PST 1997'),
106
- Time.parse('Wed Jan 1 18:45:20 PST 1997')
107
- ] }
108
- end
109
- end
110
- end
@@ -1,2338 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RRule::Rule do
4
- describe '#next' do
5
- it 'can sequentially return values' do
6
- rrule = 'FREQ=DAILY;COUNT=10'
7
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
8
- timezone = 'America/New_York'
9
-
10
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
11
-
12
- expect(rrule.next).to eql Time.parse('Tue Sep 2 06:00:00 PDT 1997')
13
- expect(rrule.next).to eql Time.parse('Wed Sep 3 06:00:00 PDT 1997')
14
- expect(rrule.next).to eql Time.parse('Thu Sep 4 06:00:00 PDT 1997')
15
- end
16
- end
17
-
18
- describe '#take' do
19
- it 'can return the next N instances' do
20
- rrule = 'FREQ=DAILY;COUNT=10'
21
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
22
- timezone = 'America/New_York'
23
-
24
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
25
- expect(rrule.take(3)).to match_array([
26
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
27
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
28
- Time.parse('Thu Sep 4 06:00:00 PDT 1997')
29
- ])
30
- end
31
- end
32
-
33
- describe 'iterating with a floor_date' do
34
- describe 'No COUNT or INTERVAL > 1' do
35
- it 'uses the floor_date provided when iterating' do
36
- rrule = 'FREQ=DAILY'
37
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
38
- timezone = 'America/New_York'
39
-
40
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
41
-
42
- floor_date = Time.parse('Mon Sep 3 06:00:00 PDT 2018')
43
-
44
- expect(rrule.each(floor_date: floor_date).take(3)).to match_array([
45
- Time.parse('Tue Sep 3 06:00:00 PDT 2018'),
46
- Time.parse('Wed Sep 4 06:00:00 PDT 2018'),
47
- Time.parse('Thu Sep 5 06:00:00 PDT 2018')
48
- ])
49
- end
50
- end
51
-
52
- describe 'COUNT present' do
53
- it 'starts at dtstart when iterating' do
54
- rrule = 'FREQ=DAILY;COUNT=10'
55
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
56
- timezone = 'America/New_York'
57
-
58
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
59
-
60
- floor_date = Time.parse('Mon Sep 3 06:00:00 PDT 2018')
61
-
62
- expect(rrule.each(floor_date: floor_date).take(3)).to match_array([
63
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
64
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
65
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
66
- ])
67
- end
68
- end
69
-
70
- describe 'INTERVAL present' do
71
- it 'starts at dtstart when iterating' do
72
- rrule = 'FREQ=DAILY;INTERVAL=10'
73
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
74
- timezone = 'America/New_York'
75
-
76
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
77
-
78
- floor_date = Time.parse('Mon Sep 3 06:00:00 PDT 2018')
79
-
80
- expect(rrule.each(floor_date: floor_date).take(3)).to match_array([
81
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
82
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
83
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
84
- ])
85
- end
86
- end
87
-
88
- describe 'INTERVAL AND COUNT present' do
89
- it 'starts at dtstart when iterating' do
90
- rrule = 'FREQ=DAILY;INTERVAL=10;COUNT=5'
91
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
92
- timezone = 'America/New_York'
93
-
94
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
95
-
96
- floor_date = Time.parse('Mon Sep 3 06:00:00 PDT 2018')
97
-
98
- expect(rrule.each(floor_date: floor_date).take(3)).to match_array([
99
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
100
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
101
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
102
- ])
103
- end
104
- end
105
- end
106
-
107
- describe '#all' do
108
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=10' do
109
- rrule = 'FREQ=DAILY;COUNT=10'
110
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
111
- timezone = 'America/New_York'
112
-
113
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
114
- expect(rrule.all).to match_array([
115
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
116
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
117
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
118
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
119
- Time.parse('Sat Sep 6 06:00:00 PDT 1997'),
120
- Time.parse('Sun Sep 7 06:00:00 PDT 1997'),
121
- Time.parse('Mon Sep 8 06:00:00 PDT 1997'),
122
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
123
- Time.parse('Wed Sep 10 06:00:00 PDT 1997'),
124
- Time.parse('Thu Sep 11 06:00:00 PDT 1997')
125
- ])
126
- end
127
-
128
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=10 and a limit' do
129
- rrule = 'FREQ=DAILY;COUNT=10'
130
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
131
- timezone = 'America/New_York'
132
-
133
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
134
- expect(rrule.all(limit: 5)).to match_array([
135
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
136
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
137
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
138
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
139
- Time.parse('Sat Sep 6 06:00:00 PDT 1997')
140
- ])
141
- end
142
-
143
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=19971224T000000Z' do
144
- rrule = 'FREQ=DAILY;UNTIL=19971224T000000Z'
145
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
146
- timezone = 'America/New_York'
147
-
148
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
149
- expect(rrule.all).to match_array([
150
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
151
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
152
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
153
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
154
- Time.parse('Sat Sep 6 06:00:00 PDT 1997'),
155
- Time.parse('Sun Sep 7 06:00:00 PDT 1997'),
156
- Time.parse('Mon Sep 8 06:00:00 PDT 1997'),
157
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
158
- Time.parse('Wed Sep 10 06:00:00 PDT 1997'),
159
- Time.parse('Thu Sep 11 06:00:00 PDT 1997'),
160
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
161
- Time.parse('Sat Sep 13 06:00:00 PDT 1997'),
162
- Time.parse('Sun Sep 14 06:00:00 PDT 1997'),
163
- Time.parse('Mon Sep 15 06:00:00 PDT 1997'),
164
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
165
- Time.parse('Wed Sep 17 06:00:00 PDT 1997'),
166
- Time.parse('Thu Sep 18 06:00:00 PDT 1997'),
167
- Time.parse('Fri Sep 19 06:00:00 PDT 1997'),
168
- Time.parse('Sat Sep 20 06:00:00 PDT 1997'),
169
- Time.parse('Sun Sep 21 06:00:00 PDT 1997'),
170
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
171
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
172
- Time.parse('Wed Sep 24 06:00:00 PDT 1997'),
173
- Time.parse('Thu Sep 25 06:00:00 PDT 1997'),
174
- Time.parse('Fri Sep 26 06:00:00 PDT 1997'),
175
- Time.parse('Sat Sep 27 06:00:00 PDT 1997'),
176
- Time.parse('Sun Sep 28 06:00:00 PDT 1997'),
177
- Time.parse('Mon Sep 29 06:00:00 PDT 1997'),
178
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
179
- Time.parse('Wed Oct 1 06:00:00 PDT 1997'),
180
- Time.parse('Thu Oct 2 06:00:00 PDT 1997'),
181
- Time.parse('Fri Oct 3 06:00:00 PDT 1997'),
182
- Time.parse('Sat Oct 4 06:00:00 PDT 1997'),
183
- Time.parse('Sun Oct 5 06:00:00 PDT 1997'),
184
- Time.parse('Mon Oct 6 06:00:00 PDT 1997'),
185
- Time.parse('Tue Oct 7 06:00:00 PDT 1997'),
186
- Time.parse('Wed Oct 8 06:00:00 PDT 1997'),
187
- Time.parse('Thu Oct 9 06:00:00 PDT 1997'),
188
- Time.parse('Fri Oct 10 06:00:00 PDT 1997'),
189
- Time.parse('Sat Oct 11 06:00:00 PDT 1997'),
190
- Time.parse('Sun Oct 12 06:00:00 PDT 1997'),
191
- Time.parse('Mon Oct 13 06:00:00 PDT 1997'),
192
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
193
- Time.parse('Wed Oct 15 06:00:00 PDT 1997'),
194
- Time.parse('Thu Oct 16 06:00:00 PDT 1997'),
195
- Time.parse('Fri Oct 17 06:00:00 PDT 1997'),
196
- Time.parse('Sat Oct 18 06:00:00 PDT 1997'),
197
- Time.parse('Sun Oct 19 06:00:00 PDT 1997'),
198
- Time.parse('Mon Oct 20 06:00:00 PDT 1997'),
199
- Time.parse('Tue Oct 21 06:00:00 PDT 1997'),
200
- Time.parse('Wed Oct 22 06:00:00 PDT 1997'),
201
- Time.parse('Thu Oct 23 06:00:00 PDT 1997'),
202
- Time.parse('Fri Oct 24 06:00:00 PDT 1997'),
203
- Time.parse('Sat Oct 25 06:00:00 PDT 1997'),
204
- Time.parse('Sun Oct 26 06:00:00 PST 1997'),
205
- Time.parse('Mon Oct 27 06:00:00 PST 1997'),
206
- Time.parse('Tue Oct 28 06:00:00 PST 1997'),
207
- Time.parse('Wed Oct 29 06:00:00 PST 1997'),
208
- Time.parse('Thu Oct 30 06:00:00 PST 1997'),
209
- Time.parse('Fri Oct 31 06:00:00 PST 1997'),
210
- Time.parse('Sat Nov 1 06:00:00 PST 1997'),
211
- Time.parse('Sun Nov 2 06:00:00 PST 1997'),
212
- Time.parse('Mon Nov 3 06:00:00 PST 1997'),
213
- Time.parse('Tue Nov 4 06:00:00 PST 1997'),
214
- Time.parse('Wed Nov 5 06:00:00 PST 1997'),
215
- Time.parse('Thu Nov 6 06:00:00 PST 1997'),
216
- Time.parse('Fri Nov 7 06:00:00 PST 1997'),
217
- Time.parse('Sat Nov 8 06:00:00 PST 1997'),
218
- Time.parse('Sun Nov 9 06:00:00 PST 1997'),
219
- Time.parse('Mon Nov 10 06:00:00 PST 1997'),
220
- Time.parse('Tue Nov 11 06:00:00 PST 1997'),
221
- Time.parse('Wed Nov 12 06:00:00 PST 1997'),
222
- Time.parse('Thu Nov 13 06:00:00 PST 1997'),
223
- Time.parse('Fri Nov 14 06:00:00 PST 1997'),
224
- Time.parse('Sat Nov 15 06:00:00 PST 1997'),
225
- Time.parse('Sun Nov 16 06:00:00 PST 1997'),
226
- Time.parse('Mon Nov 17 06:00:00 PST 1997'),
227
- Time.parse('Tue Nov 18 06:00:00 PST 1997'),
228
- Time.parse('Wed Nov 19 06:00:00 PST 1997'),
229
- Time.parse('Thu Nov 20 06:00:00 PST 1997'),
230
- Time.parse('Fri Nov 21 06:00:00 PST 1997'),
231
- Time.parse('Sat Nov 22 06:00:00 PST 1997'),
232
- Time.parse('Sun Nov 23 06:00:00 PST 1997'),
233
- Time.parse('Mon Nov 24 06:00:00 PST 1997'),
234
- Time.parse('Tue Nov 25 06:00:00 PST 1997'),
235
- Time.parse('Wed Nov 26 06:00:00 PST 1997'),
236
- Time.parse('Thu Nov 27 06:00:00 PST 1997'),
237
- Time.parse('Fri Nov 28 06:00:00 PST 1997'),
238
- Time.parse('Sat Nov 29 06:00:00 PST 1997'),
239
- Time.parse('Sun Nov 30 06:00:00 PST 1997'),
240
- Time.parse('Mon Dec 1 06:00:00 PST 1997'),
241
- Time.parse('Tue Dec 2 06:00:00 PST 1997'),
242
- Time.parse('Wed Dec 3 06:00:00 PST 1997'),
243
- Time.parse('Thu Dec 4 06:00:00 PST 1997'),
244
- Time.parse('Fri Dec 5 06:00:00 PST 1997'),
245
- Time.parse('Sat Dec 6 06:00:00 PST 1997'),
246
- Time.parse('Sun Dec 7 06:00:00 PST 1997'),
247
- Time.parse('Mon Dec 8 06:00:00 PST 1997'),
248
- Time.parse('Tue Dec 9 06:00:00 PST 1997'),
249
- Time.parse('Wed Dec 10 06:00:00 PST 1997'),
250
- Time.parse('Thu Dec 11 06:00:00 PST 1997'),
251
- Time.parse('Fri Dec 12 06:00:00 PST 1997'),
252
- Time.parse('Sat Dec 13 06:00:00 PST 1997'),
253
- Time.parse('Sun Dec 14 06:00:00 PST 1997'),
254
- Time.parse('Mon Dec 15 06:00:00 PST 1997'),
255
- Time.parse('Tue Dec 16 06:00:00 PST 1997'),
256
- Time.parse('Wed Dec 17 06:00:00 PST 1997'),
257
- Time.parse('Thu Dec 18 06:00:00 PST 1997'),
258
- Time.parse('Fri Dec 19 06:00:00 PST 1997'),
259
- Time.parse('Sat Dec 20 06:00:00 PST 1997'),
260
- Time.parse('Sun Dec 21 06:00:00 PST 1997'),
261
- Time.parse('Mon Dec 22 06:00:00 PST 1997'),
262
- Time.parse('Tue Dec 23 06:00:00 PST 1997')
263
- ])
264
- end
265
-
266
- it 'returns the correct result with an rrule of FREQ=DAILY;INTERVAL=10;COUNT=5' do
267
- rrule = 'FREQ=DAILY;INTERVAL=10;COUNT=5'
268
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
269
- timezone = 'America/New_York'
270
-
271
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
272
- expect(rrule.all).to match_array([
273
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
274
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
275
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
276
- Time.parse('Thu Oct 2 06:00:00 PDT 1997'),
277
- Time.parse('Sun Oct 12 06:00:00 PDT 1997')
278
- ])
279
- end
280
-
281
- it 'returns the correct result with an rrule of FREQ=YEARLY;UNTIL=20000131T140000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA' do
282
- rrule = 'FREQ=YEARLY;UNTIL=20000131T140000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA'
283
- dtstart = Time.parse('Thu Jan 1 06:00:00 PST 1998')
284
- timezone = 'America/New_York'
285
-
286
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
287
- expect(rrule.all).to match_array([
288
- Time.parse('Thu Jan 1 06:00:00 PST 1998'),
289
- Time.parse('Fri Jan 2 06:00:00 PST 1998'),
290
- Time.parse('Sat Jan 3 06:00:00 PST 1998'),
291
- Time.parse('Sun Jan 4 06:00:00 PST 1998'),
292
- Time.parse('Mon Jan 5 06:00:00 PST 1998'),
293
- Time.parse('Tue Jan 6 06:00:00 PST 1998'),
294
- Time.parse('Wed Jan 7 06:00:00 PST 1998'),
295
- Time.parse('Thu Jan 8 06:00:00 PST 1998'),
296
- Time.parse('Fri Jan 9 06:00:00 PST 1998'),
297
- Time.parse('Sat Jan 10 06:00:00 PST 1998'),
298
- Time.parse('Sun Jan 11 06:00:00 PST 1998'),
299
- Time.parse('Mon Jan 12 06:00:00 PST 1998'),
300
- Time.parse('Tue Jan 13 06:00:00 PST 1998'),
301
- Time.parse('Wed Jan 14 06:00:00 PST 1998'),
302
- Time.parse('Thu Jan 15 06:00:00 PST 1998'),
303
- Time.parse('Fri Jan 16 06:00:00 PST 1998'),
304
- Time.parse('Sat Jan 17 06:00:00 PST 1998'),
305
- Time.parse('Sun Jan 18 06:00:00 PST 1998'),
306
- Time.parse('Mon Jan 19 06:00:00 PST 1998'),
307
- Time.parse('Tue Jan 20 06:00:00 PST 1998'),
308
- Time.parse('Wed Jan 21 06:00:00 PST 1998'),
309
- Time.parse('Thu Jan 22 06:00:00 PST 1998'),
310
- Time.parse('Fri Jan 23 06:00:00 PST 1998'),
311
- Time.parse('Sat Jan 24 06:00:00 PST 1998'),
312
- Time.parse('Sun Jan 25 06:00:00 PST 1998'),
313
- Time.parse('Mon Jan 26 06:00:00 PST 1998'),
314
- Time.parse('Tue Jan 27 06:00:00 PST 1998'),
315
- Time.parse('Wed Jan 28 06:00:00 PST 1998'),
316
- Time.parse('Thu Jan 29 06:00:00 PST 1998'),
317
- Time.parse('Fri Jan 30 06:00:00 PST 1998'),
318
- Time.parse('Sat Jan 31 06:00:00 PST 1998'),
319
- Time.parse('Fri Jan 1 06:00:00 PST 1999'),
320
- Time.parse('Sat Jan 2 06:00:00 PST 1999'),
321
- Time.parse('Sun Jan 3 06:00:00 PST 1999'),
322
- Time.parse('Mon Jan 4 06:00:00 PST 1999'),
323
- Time.parse('Tue Jan 5 06:00:00 PST 1999'),
324
- Time.parse('Wed Jan 6 06:00:00 PST 1999'),
325
- Time.parse('Thu Jan 7 06:00:00 PST 1999'),
326
- Time.parse('Fri Jan 8 06:00:00 PST 1999'),
327
- Time.parse('Sat Jan 9 06:00:00 PST 1999'),
328
- Time.parse('Sun Jan 10 06:00:00 PST 1999'),
329
- Time.parse('Mon Jan 11 06:00:00 PST 1999'),
330
- Time.parse('Tue Jan 12 06:00:00 PST 1999'),
331
- Time.parse('Wed Jan 13 06:00:00 PST 1999'),
332
- Time.parse('Thu Jan 14 06:00:00 PST 1999'),
333
- Time.parse('Fri Jan 15 06:00:00 PST 1999'),
334
- Time.parse('Sat Jan 16 06:00:00 PST 1999'),
335
- Time.parse('Sun Jan 17 06:00:00 PST 1999'),
336
- Time.parse('Mon Jan 18 06:00:00 PST 1999'),
337
- Time.parse('Tue Jan 19 06:00:00 PST 1999'),
338
- Time.parse('Wed Jan 20 06:00:00 PST 1999'),
339
- Time.parse('Thu Jan 21 06:00:00 PST 1999'),
340
- Time.parse('Fri Jan 22 06:00:00 PST 1999'),
341
- Time.parse('Sat Jan 23 06:00:00 PST 1999'),
342
- Time.parse('Sun Jan 24 06:00:00 PST 1999'),
343
- Time.parse('Mon Jan 25 06:00:00 PST 1999'),
344
- Time.parse('Tue Jan 26 06:00:00 PST 1999'),
345
- Time.parse('Wed Jan 27 06:00:00 PST 1999'),
346
- Time.parse('Thu Jan 28 06:00:00 PST 1999'),
347
- Time.parse('Fri Jan 29 06:00:00 PST 1999'),
348
- Time.parse('Sat Jan 30 06:00:00 PST 1999'),
349
- Time.parse('Sun Jan 31 06:00:00 PST 1999'),
350
- Time.parse('Sat Jan 1 06:00:00 PST 2000'),
351
- Time.parse('Sun Jan 2 06:00:00 PST 2000'),
352
- Time.parse('Mon Jan 3 06:00:00 PST 2000'),
353
- Time.parse('Tue Jan 4 06:00:00 PST 2000'),
354
- Time.parse('Wed Jan 5 06:00:00 PST 2000'),
355
- Time.parse('Thu Jan 6 06:00:00 PST 2000'),
356
- Time.parse('Fri Jan 7 06:00:00 PST 2000'),
357
- Time.parse('Sat Jan 8 06:00:00 PST 2000'),
358
- Time.parse('Sun Jan 9 06:00:00 PST 2000'),
359
- Time.parse('Mon Jan 10 06:00:00 PST 2000'),
360
- Time.parse('Tue Jan 11 06:00:00 PST 2000'),
361
- Time.parse('Wed Jan 12 06:00:00 PST 2000'),
362
- Time.parse('Thu Jan 13 06:00:00 PST 2000'),
363
- Time.parse('Fri Jan 14 06:00:00 PST 2000'),
364
- Time.parse('Sat Jan 15 06:00:00 PST 2000'),
365
- Time.parse('Sun Jan 16 06:00:00 PST 2000'),
366
- Time.parse('Mon Jan 17 06:00:00 PST 2000'),
367
- Time.parse('Tue Jan 18 06:00:00 PST 2000'),
368
- Time.parse('Wed Jan 19 06:00:00 PST 2000'),
369
- Time.parse('Thu Jan 20 06:00:00 PST 2000'),
370
- Time.parse('Fri Jan 21 06:00:00 PST 2000'),
371
- Time.parse('Sat Jan 22 06:00:00 PST 2000'),
372
- Time.parse('Sun Jan 23 06:00:00 PST 2000'),
373
- Time.parse('Mon Jan 24 06:00:00 PST 2000'),
374
- Time.parse('Tue Jan 25 06:00:00 PST 2000'),
375
- Time.parse('Wed Jan 26 06:00:00 PST 2000'),
376
- Time.parse('Thu Jan 27 06:00:00 PST 2000'),
377
- Time.parse('Fri Jan 28 06:00:00 PST 2000'),
378
- Time.parse('Sat Jan 29 06:00:00 PST 2000'),
379
- Time.parse('Sun Jan 30 06:00:00 PST 2000'),
380
- Time.parse('Mon Jan 31 06:00:00 PST 2000')
381
- ])
382
- end
383
-
384
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1' do
385
- rrule = 'FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1'
386
- dtstart = Time.parse('Thu Jan 1 06:00:00 PST 1998')
387
- timezone = 'America/New_York'
388
-
389
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
390
- expect(rrule.all).to match_array([
391
- Time.parse('Thu Jan 1 06:00:00 PST 1998'),
392
- Time.parse('Fri Jan 2 06:00:00 PST 1998'),
393
- Time.parse('Sat Jan 3 06:00:00 PST 1998'),
394
- Time.parse('Sun Jan 4 06:00:00 PST 1998'),
395
- Time.parse('Mon Jan 5 06:00:00 PST 1998'),
396
- Time.parse('Tue Jan 6 06:00:00 PST 1998'),
397
- Time.parse('Wed Jan 7 06:00:00 PST 1998'),
398
- Time.parse('Thu Jan 8 06:00:00 PST 1998'),
399
- Time.parse('Fri Jan 9 06:00:00 PST 1998'),
400
- Time.parse('Sat Jan 10 06:00:00 PST 1998'),
401
- Time.parse('Sun Jan 11 06:00:00 PST 1998'),
402
- Time.parse('Mon Jan 12 06:00:00 PST 1998'),
403
- Time.parse('Tue Jan 13 06:00:00 PST 1998'),
404
- Time.parse('Wed Jan 14 06:00:00 PST 1998'),
405
- Time.parse('Thu Jan 15 06:00:00 PST 1998'),
406
- Time.parse('Fri Jan 16 06:00:00 PST 1998'),
407
- Time.parse('Sat Jan 17 06:00:00 PST 1998'),
408
- Time.parse('Sun Jan 18 06:00:00 PST 1998'),
409
- Time.parse('Mon Jan 19 06:00:00 PST 1998'),
410
- Time.parse('Tue Jan 20 06:00:00 PST 1998'),
411
- Time.parse('Wed Jan 21 06:00:00 PST 1998'),
412
- Time.parse('Thu Jan 22 06:00:00 PST 1998'),
413
- Time.parse('Fri Jan 23 06:00:00 PST 1998'),
414
- Time.parse('Sat Jan 24 06:00:00 PST 1998'),
415
- Time.parse('Sun Jan 25 06:00:00 PST 1998'),
416
- Time.parse('Mon Jan 26 06:00:00 PST 1998'),
417
- Time.parse('Tue Jan 27 06:00:00 PST 1998'),
418
- Time.parse('Wed Jan 28 06:00:00 PST 1998'),
419
- Time.parse('Thu Jan 29 06:00:00 PST 1998'),
420
- Time.parse('Fri Jan 30 06:00:00 PST 1998'),
421
- Time.parse('Sat Jan 31 06:00:00 PST 1998'),
422
- Time.parse('Fri Jan 1 06:00:00 PST 1999'),
423
- Time.parse('Sat Jan 2 06:00:00 PST 1999'),
424
- Time.parse('Sun Jan 3 06:00:00 PST 1999'),
425
- Time.parse('Mon Jan 4 06:00:00 PST 1999'),
426
- Time.parse('Tue Jan 5 06:00:00 PST 1999'),
427
- Time.parse('Wed Jan 6 06:00:00 PST 1999'),
428
- Time.parse('Thu Jan 7 06:00:00 PST 1999'),
429
- Time.parse('Fri Jan 8 06:00:00 PST 1999'),
430
- Time.parse('Sat Jan 9 06:00:00 PST 1999'),
431
- Time.parse('Sun Jan 10 06:00:00 PST 1999'),
432
- Time.parse('Mon Jan 11 06:00:00 PST 1999'),
433
- Time.parse('Tue Jan 12 06:00:00 PST 1999'),
434
- Time.parse('Wed Jan 13 06:00:00 PST 1999'),
435
- Time.parse('Thu Jan 14 06:00:00 PST 1999'),
436
- Time.parse('Fri Jan 15 06:00:00 PST 1999'),
437
- Time.parse('Sat Jan 16 06:00:00 PST 1999'),
438
- Time.parse('Sun Jan 17 06:00:00 PST 1999'),
439
- Time.parse('Mon Jan 18 06:00:00 PST 1999'),
440
- Time.parse('Tue Jan 19 06:00:00 PST 1999'),
441
- Time.parse('Wed Jan 20 06:00:00 PST 1999'),
442
- Time.parse('Thu Jan 21 06:00:00 PST 1999'),
443
- Time.parse('Fri Jan 22 06:00:00 PST 1999'),
444
- Time.parse('Sat Jan 23 06:00:00 PST 1999'),
445
- Time.parse('Sun Jan 24 06:00:00 PST 1999'),
446
- Time.parse('Mon Jan 25 06:00:00 PST 1999'),
447
- Time.parse('Tue Jan 26 06:00:00 PST 1999'),
448
- Time.parse('Wed Jan 27 06:00:00 PST 1999'),
449
- Time.parse('Thu Jan 28 06:00:00 PST 1999'),
450
- Time.parse('Fri Jan 29 06:00:00 PST 1999'),
451
- Time.parse('Sat Jan 30 06:00:00 PST 1999'),
452
- Time.parse('Sun Jan 31 06:00:00 PST 1999'),
453
- Time.parse('Sat Jan 1 06:00:00 PST 2000'),
454
- Time.parse('Sun Jan 2 06:00:00 PST 2000'),
455
- Time.parse('Mon Jan 3 06:00:00 PST 2000'),
456
- Time.parse('Tue Jan 4 06:00:00 PST 2000'),
457
- Time.parse('Wed Jan 5 06:00:00 PST 2000'),
458
- Time.parse('Thu Jan 6 06:00:00 PST 2000'),
459
- Time.parse('Fri Jan 7 06:00:00 PST 2000'),
460
- Time.parse('Sat Jan 8 06:00:00 PST 2000'),
461
- Time.parse('Sun Jan 9 06:00:00 PST 2000'),
462
- Time.parse('Mon Jan 10 06:00:00 PST 2000'),
463
- Time.parse('Tue Jan 11 06:00:00 PST 2000'),
464
- Time.parse('Wed Jan 12 06:00:00 PST 2000'),
465
- Time.parse('Thu Jan 13 06:00:00 PST 2000'),
466
- Time.parse('Fri Jan 14 06:00:00 PST 2000'),
467
- Time.parse('Sat Jan 15 06:00:00 PST 2000'),
468
- Time.parse('Sun Jan 16 06:00:00 PST 2000'),
469
- Time.parse('Mon Jan 17 06:00:00 PST 2000'),
470
- Time.parse('Tue Jan 18 06:00:00 PST 2000'),
471
- Time.parse('Wed Jan 19 06:00:00 PST 2000'),
472
- Time.parse('Thu Jan 20 06:00:00 PST 2000'),
473
- Time.parse('Fri Jan 21 06:00:00 PST 2000'),
474
- Time.parse('Sat Jan 22 06:00:00 PST 2000'),
475
- Time.parse('Sun Jan 23 06:00:00 PST 2000'),
476
- Time.parse('Mon Jan 24 06:00:00 PST 2000'),
477
- Time.parse('Tue Jan 25 06:00:00 PST 2000'),
478
- Time.parse('Wed Jan 26 06:00:00 PST 2000'),
479
- Time.parse('Thu Jan 27 06:00:00 PST 2000'),
480
- Time.parse('Fri Jan 28 06:00:00 PST 2000'),
481
- Time.parse('Sat Jan 29 06:00:00 PST 2000'),
482
- Time.parse('Sun Jan 30 06:00:00 PST 2000'),
483
- Time.parse('Mon Jan 31 06:00:00 PST 2000')
484
- ])
485
- end
486
-
487
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=10' do
488
- rrule = 'FREQ=WEEKLY;COUNT=10'
489
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
490
- timezone = 'America/New_York'
491
-
492
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
493
- expect(rrule.all).to match_array([
494
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
495
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
496
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
497
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
498
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
499
- Time.parse('Tue Oct 7 06:00:00 PDT 1997'),
500
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
501
- Time.parse('Tue Oct 21 06:00:00 PDT 1997'),
502
- Time.parse('Tue Oct 28 06:00:00 PST 1997'),
503
- Time.parse('Tue Nov 4 06:00:00 PST 1997')
504
- ])
505
- end
506
-
507
- it 'returns the correct result with an rrule of FREQ=WEEKLY;UNTIL=19971224T000000Z' do
508
- rrule = 'FREQ=WEEKLY;UNTIL=19971224T000000Z'
509
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
510
- timezone = 'America/New_York'
511
-
512
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
513
- expect(rrule.all).to match_array([
514
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
515
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
516
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
517
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
518
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
519
- Time.parse('Tue Oct 7 06:00:00 PDT 1997'),
520
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
521
- Time.parse('Tue Oct 21 06:00:00 PDT 1997'),
522
- Time.parse('Tue Oct 28 06:00:00 PST 1997'),
523
- Time.parse('Tue Nov 4 06:00:00 PST 1997'),
524
- Time.parse('Tue Nov 11 06:00:00 PST 1997'),
525
- Time.parse('Tue Nov 18 06:00:00 PST 1997'),
526
- Time.parse('Tue Nov 25 06:00:00 PST 1997'),
527
- Time.parse('Tue Dec 2 06:00:00 PST 1997'),
528
- Time.parse('Tue Dec 9 06:00:00 PST 1997'),
529
- Time.parse('Tue Dec 16 06:00:00 PST 1997'),
530
- Time.parse('Tue Dec 23 06:00:00 PST 1997')
531
- ])
532
- end
533
-
534
- it 'returns the correct result with an rrule of FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH' do
535
- rrule = 'FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH'
536
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
537
- timezone = 'America/New_York'
538
-
539
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
540
- expect(rrule.all).to match_array([
541
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
542
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
543
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
544
- Time.parse('Thu Sep 11 06:00:00 PDT 1997'),
545
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
546
- Time.parse('Thu Sep 18 06:00:00 PDT 1997'),
547
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
548
- Time.parse('Thu Sep 25 06:00:00 PDT 1997'),
549
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
550
- Time.parse('Thu Oct 2 06:00:00 PDT 1997')
551
- ])
552
- end
553
-
554
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH' do
555
- rrule = 'FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH'
556
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
557
- timezone = 'America/New_York'
558
-
559
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
560
- expect(rrule.all).to match_array([
561
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
562
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
563
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
564
- Time.parse('Thu Sep 11 06:00:00 PDT 1997'),
565
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
566
- Time.parse('Thu Sep 18 06:00:00 PDT 1997'),
567
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
568
- Time.parse('Thu Sep 25 06:00:00 PDT 1997'),
569
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
570
- Time.parse('Thu Oct 2 06:00:00 PDT 1997')
571
- ])
572
- end
573
-
574
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR' do
575
- rrule = 'FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR'
576
- dtstart = Time.parse('Mon Sep 1 06:00:00 PDT 1997')
577
- timezone = 'America/New_York'
578
-
579
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
580
- expect(rrule.all).to match_array([
581
- Time.parse('Mon Sep 1 06:00:00 PDT 1997'),
582
- Time.parse('Wed Sep 3 06:00:00 PDT 1997'),
583
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
584
- Time.parse('Mon Sep 15 06:00:00 PDT 1997'),
585
- Time.parse('Wed Sep 17 06:00:00 PDT 1997'),
586
- Time.parse('Fri Sep 19 06:00:00 PDT 1997'),
587
- Time.parse('Mon Sep 29 06:00:00 PDT 1997'),
588
- Time.parse('Wed Oct 1 06:00:00 PDT 1997'),
589
- Time.parse('Fri Oct 3 06:00:00 PDT 1997'),
590
- Time.parse('Mon Oct 13 06:00:00 PDT 1997'),
591
- Time.parse('Wed Oct 15 06:00:00 PDT 1997'),
592
- Time.parse('Fri Oct 17 06:00:00 PDT 1997'),
593
- Time.parse('Mon Oct 27 06:00:00 PST 1997'),
594
- Time.parse('Wed Oct 29 06:00:00 PST 1997'),
595
- Time.parse('Fri Oct 31 06:00:00 PST 1997'),
596
- Time.parse('Mon Nov 10 06:00:00 PST 1997'),
597
- Time.parse('Wed Nov 12 06:00:00 PST 1997'),
598
- Time.parse('Fri Nov 14 06:00:00 PST 1997'),
599
- Time.parse('Mon Nov 24 06:00:00 PST 1997'),
600
- Time.parse('Wed Nov 26 06:00:00 PST 1997'),
601
- Time.parse('Fri Nov 28 06:00:00 PST 1997'),
602
- Time.parse('Mon Dec 8 06:00:00 PST 1997'),
603
- Time.parse('Wed Dec 10 06:00:00 PST 1997'),
604
- Time.parse('Fri Dec 12 06:00:00 PST 1997'),
605
- Time.parse('Mon Dec 22 06:00:00 PST 1997')
606
- ])
607
- end
608
-
609
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH' do
610
- rrule = 'FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH'
611
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
612
- timezone = 'America/New_York'
613
-
614
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
615
- expect(rrule.all).to match_array([
616
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
617
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
618
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
619
- Time.parse('Thu Sep 18 06:00:00 PDT 1997'),
620
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
621
- Time.parse('Thu Oct 2 06:00:00 PDT 1997'),
622
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
623
- Time.parse('Thu Oct 16 06:00:00 PDT 1997')
624
- ])
625
- end
626
-
627
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=10;BYDAY=1FR' do
628
- rrule = 'FREQ=MONTHLY;COUNT=10;BYDAY=1FR'
629
- dtstart = Time.parse('Fri Sep 5 06:00:00 PDT 1997')
630
- timezone = 'America/New_York'
631
-
632
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
633
- expect(rrule.all).to match_array([
634
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
635
- Time.parse('Fri Oct 3 06:00:00 PDT 1997'),
636
- Time.parse('Fri Nov 7 06:00:00 PST 1997'),
637
- Time.parse('Fri Dec 5 06:00:00 PST 1997'),
638
- Time.parse('Fri Jan 2 06:00:00 PST 1998'),
639
- Time.parse('Fri Feb 6 06:00:00 PST 1998'),
640
- Time.parse('Fri Mar 6 06:00:00 PST 1998'),
641
- Time.parse('Fri Apr 3 06:00:00 PST 1998'),
642
- Time.parse('Fri May 1 06:00:00 PDT 1998'),
643
- Time.parse('Fri Jun 5 06:00:00 PDT 1998')
644
- ])
645
- end
646
-
647
- it 'returns the correct result with an rrule of FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR' do
648
- rrule = 'FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR'
649
- dtstart = Time.parse('Fri Sep 5 06:00:00 PDT 1997')
650
- timezone = 'America/New_York'
651
-
652
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
653
- expect(rrule.all).to match_array([
654
- Time.parse('Fri Sep 5 06:00:00 PDT 1997'),
655
- Time.parse('Fri Oct 3 06:00:00 PDT 1997'),
656
- Time.parse('Fri Nov 7 06:00:00 PST 1997'),
657
- Time.parse('Fri Dec 5 06:00:00 PST 1997')
658
- ])
659
- end
660
-
661
- it 'returns the correct result with an rrule of FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU' do
662
- rrule = 'FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU'
663
- dtstart = Time.parse('Sun Sep 7 06:00:00 PDT 1997')
664
- timezone = 'America/New_York'
665
-
666
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
667
- expect(rrule.all).to match_array([
668
- Time.parse('Sun Sep 7 06:00:00 PDT 1997'),
669
- Time.parse('Sun Sep 28 06:00:00 PDT 1997'),
670
- Time.parse('Sun Nov 2 06:00:00 PST 1997'),
671
- Time.parse('Sun Nov 30 06:00:00 PST 1997'),
672
- Time.parse('Sun Jan 4 06:00:00 PST 1998'),
673
- Time.parse('Sun Jan 25 06:00:00 PST 1998'),
674
- Time.parse('Sun Mar 1 06:00:00 PST 1998'),
675
- Time.parse('Sun Mar 29 06:00:00 PST 1998'),
676
- Time.parse('Sun May 3 06:00:00 PDT 1998'),
677
- Time.parse('Sun May 31 06:00:00 PDT 1998')
678
- ])
679
- end
680
-
681
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=6;BYDAY=-2MO' do
682
- rrule = 'FREQ=MONTHLY;COUNT=6;BYDAY=-2MO'
683
- dtstart = Time.parse('Mon Sep 22 06:00:00 PDT 1997')
684
- timezone = 'America/New_York'
685
-
686
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
687
- expect(rrule.all).to match_array([
688
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
689
- Time.parse('Mon Oct 20 06:00:00 PDT 1997'),
690
- Time.parse('Mon Nov 17 06:00:00 PST 1997'),
691
- Time.parse('Mon Dec 22 06:00:00 PST 1997'),
692
- Time.parse('Mon Jan 19 06:00:00 PST 1998'),
693
- Time.parse('Mon Feb 16 06:00:00 PST 1998')
694
- ])
695
- end
696
-
697
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15' do
698
- rrule = 'FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15'
699
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
700
- timezone = 'America/New_York'
701
-
702
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
703
- expect(rrule.all).to match_array([
704
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
705
- Time.parse('Mon Sep 15 06:00:00 PDT 1997'),
706
- Time.parse('Thu Oct 2 06:00:00 PDT 1997'),
707
- Time.parse('Wed Oct 15 06:00:00 PDT 1997'),
708
- Time.parse('Sun Nov 2 06:00:00 PST 1997'),
709
- Time.parse('Sat Nov 15 06:00:00 PST 1997'),
710
- Time.parse('Tue Dec 2 06:00:00 PST 1997'),
711
- Time.parse('Mon Dec 15 06:00:00 PST 1997'),
712
- Time.parse('Fri Jan 2 06:00:00 PST 1998'),
713
- Time.parse('Thu Jan 15 06:00:00 PST 1998')
714
- ])
715
- end
716
-
717
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1' do
718
- rrule = 'FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1'
719
- dtstart = Time.parse('Tue Sep 30 06:00:00 PDT 1997')
720
- timezone = 'America/New_York'
721
-
722
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
723
- expect(rrule.all).to match_array([
724
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
725
- Time.parse('Wed Oct 1 06:00:00 PDT 1997'),
726
- Time.parse('Fri Oct 31 06:00:00 PST 1997'),
727
- Time.parse('Sat Nov 1 06:00:00 PST 1997'),
728
- Time.parse('Sun Nov 30 06:00:00 PST 1997'),
729
- Time.parse('Mon Dec 1 06:00:00 PST 1997'),
730
- Time.parse('Wed Dec 31 06:00:00 PST 1997'),
731
- Time.parse('Thu Jan 1 06:00:00 PST 1998'),
732
- Time.parse('Sat Jan 31 06:00:00 PST 1998'),
733
- Time.parse('Sun Feb 1 06:00:00 PST 1998')
734
- ])
735
- end
736
-
737
- it 'returns the correct result with an rrule of FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15' do
738
- rrule = 'FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15'
739
- dtstart = Time.parse('Wed Sep 10 06:00:00 PDT 1997')
740
- timezone = 'America/New_York'
741
-
742
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
743
- expect(rrule.all).to match_array([
744
- Time.parse('Wed Sep 10 06:00:00 PDT 1997'),
745
- Time.parse('Thu Sep 11 06:00:00 PDT 1997'),
746
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
747
- Time.parse('Sat Sep 13 06:00:00 PDT 1997'),
748
- Time.parse('Sun Sep 14 06:00:00 PDT 1997'),
749
- Time.parse('Mon Sep 15 06:00:00 PDT 1997'),
750
- Time.parse('Wed Mar 10 06:00:00 PST 1999'),
751
- Time.parse('Thu Mar 11 06:00:00 PST 1999'),
752
- Time.parse('Fri Mar 12 06:00:00 PST 1999'),
753
- Time.parse('Sat Mar 13 06:00:00 PST 1999')
754
- ])
755
- end
756
-
757
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=10;BYMONTH=6,7' do
758
- rrule = 'FREQ=YEARLY;COUNT=10;BYMONTH=6,7'
759
- dtstart = Time.parse('Tue Jun 10 06:00:00 PDT 1997')
760
- timezone = 'America/New_York'
761
-
762
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
763
- expect(rrule.all).to match_array([
764
- Time.parse('Tue Jun 10 06:00:00 PDT 1997'),
765
- Time.parse('Thu Jul 10 06:00:00 PDT 1997'),
766
- Time.parse('Wed Jun 10 06:00:00 PDT 1998'),
767
- Time.parse('Fri Jul 10 06:00:00 PDT 1998'),
768
- Time.parse('Thu Jun 10 06:00:00 PDT 1999'),
769
- Time.parse('Sat Jul 10 06:00:00 PDT 1999'),
770
- Time.parse('Sat Jun 10 06:00:00 PDT 2000'),
771
- Time.parse('Mon Jul 10 06:00:00 PDT 2000'),
772
- Time.parse('Sun Jun 10 06:00:00 PDT 2001'),
773
- Time.parse('Tue Jul 10 06:00:00 PDT 2001')
774
- ])
775
- end
776
-
777
- it 'returns the correct result with an rrule of FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3' do
778
- rrule = 'FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3'
779
- dtstart = Time.parse('Mon Mar 10 06:00:00 PST 1997')
780
- timezone = 'America/New_York'
781
-
782
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
783
- expect(rrule.all).to match_array([
784
- Time.parse('Mon Mar 10 06:00:00 PST 1997'),
785
- Time.parse('Sun Jan 10 06:00:00 PST 1999'),
786
- Time.parse('Wed Feb 10 06:00:00 PST 1999'),
787
- Time.parse('Wed Mar 10 06:00:00 PST 1999'),
788
- Time.parse('Wed Jan 10 06:00:00 PST 2001'),
789
- Time.parse('Sat Feb 10 06:00:00 PST 2001'),
790
- Time.parse('Sat Mar 10 06:00:00 PST 2001'),
791
- Time.parse('Fri Jan 10 06:00:00 PST 2003'),
792
- Time.parse('Mon Feb 10 06:00:00 PST 2003'),
793
- Time.parse('Mon Mar 10 06:00:00 PST 2003')
794
- ])
795
- end
796
-
797
- it 'returns the correct result with an rrule of FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200' do
798
- rrule = 'FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200'
799
- dtstart = Time.parse('Wed Jan 1 06:00:00 PST 1997')
800
- timezone = 'America/New_York'
801
-
802
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
803
- expect(rrule.all).to match_array([
804
- Time.parse('Wed Jan 1 06:00:00 PST 1997'),
805
- Time.parse('Thu Apr 10 06:00:00 PDT 1997'),
806
- Time.parse('Sat Jul 19 06:00:00 PDT 1997'),
807
- Time.parse('Sat Jan 1 06:00:00 PST 2000'),
808
- Time.parse('Sun Apr 9 06:00:00 PDT 2000'),
809
- Time.parse('Tue Jul 18 06:00:00 PDT 2000'),
810
- Time.parse('Wed Jan 1 06:00:00 PST 2003'),
811
- Time.parse('Thu Apr 10 06:00:00 PDT 2003'),
812
- Time.parse('Sat Jul 19 06:00:00 PDT 2003'),
813
- Time.parse('Sun Jan 1 06:00:00 PST 2006')
814
- ])
815
- end
816
-
817
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13;COUNT=6' do
818
- rrule = 'FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13;COUNT=6'
819
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
820
- timezone = 'America/New_York'
821
-
822
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
823
- expect(rrule.all).to match_array([
824
- Time.parse('Fri Feb 13 06:00:00 PST 1998'),
825
- Time.parse('Fri Mar 13 06:00:00 PST 1998'),
826
- Time.parse('Fri Nov 13 06:00:00 PST 1998'),
827
- Time.parse('Fri Aug 13 06:00:00 PDT 1999'),
828
- Time.parse('Fri Oct 13 06:00:00 PDT 2000'),
829
- Time.parse('Fri Apr 13 06:00:00 PDT 2001')
830
- ])
831
- end
832
-
833
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3' do
834
- rrule = 'FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3'
835
- dtstart = Time.parse('Thu Sep 4 06:00:00 PDT 1997')
836
- timezone = 'America/New_York'
837
-
838
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
839
- expect(rrule.all).to match_array([
840
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
841
- Time.parse('Tue Oct 7 06:00:00 PDT 1997'),
842
- Time.parse('Thu Nov 6 06:00:00 PST 1997')
843
- ])
844
- end
845
-
846
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO' do
847
- rrule = 'FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO'
848
- dtstart = Time.parse('Tue Aug 5 06:00:00 PDT 1997')
849
- timezone = 'America/New_York'
850
-
851
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
852
- expect(rrule.all).to match_array([
853
- Time.parse('Tue Aug 5 06:00:00 PDT 1997'),
854
- Time.parse('Sun Aug 10 06:00:00 PDT 1997'),
855
- Time.parse('Tue Aug 19 06:00:00 PDT 1997'),
856
- Time.parse('Sun Aug 24 06:00:00 PDT 1997')
857
- ])
858
- end
859
-
860
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU' do
861
- rrule = 'FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU'
862
- dtstart = Time.parse('Tue Aug 5 06:00:00 PDT 1997')
863
- timezone = 'America/New_York'
864
-
865
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
866
- expect(rrule.all).to match_array([
867
- Time.parse('Tue Aug 5 06:00:00 PDT 1997'),
868
- Time.parse('Sun Aug 17 06:00:00 PDT 1997'),
869
- Time.parse('Tue Aug 19 06:00:00 PDT 1997'),
870
- Time.parse('Sun Aug 31 06:00:00 PDT 1997')
871
- ])
872
- end
873
-
874
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5' do
875
- rrule = 'FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5'
876
- dtstart = Time.parse('Mon Jan 15 06:00:00 PST 2007')
877
- timezone = 'America/New_York'
878
-
879
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
880
- expect(rrule.all).to match_array([
881
- Time.parse('Mon Jan 15 06:00:00 PST 2007'),
882
- Time.parse('Tue Jan 30 06:00:00 PST 2007'),
883
- Time.parse('Thu Feb 15 06:00:00 PST 2007'),
884
- Time.parse('Thu Mar 15 06:00:00 PDT 2007'),
885
- Time.parse('Fri Mar 30 06:00:00 PDT 2007')
886
- ])
887
- end
888
-
889
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=3' do
890
- rrule = 'FREQ=DAILY;COUNT=3'
891
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
892
- timezone = 'America/Los_Angeles'
893
-
894
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
895
- expect(rrule.all).to match_array([
896
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
897
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
898
- Time.parse('Thu Sep 4 09:00:00 PDT 1997')
899
- ])
900
- end
901
-
902
- it 'returns the correct result with an rrule of FREQ=DAILY;BYMONTH=1,3;COUNT=4' do
903
- rrule = 'FREQ=DAILY;BYMONTH=1,3;COUNT=4'
904
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
905
- timezone = 'America/Los_Angeles'
906
-
907
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
908
- expect(rrule.all).to match_array([
909
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
910
- Time.parse('Fri Jan 2 09:00:00 PST 1998'),
911
- Time.parse('Sat Jan 3 09:00:00 PST 1998'),
912
- Time.parse('Sun Jan 4 09:00:00 PST 1998')
913
- ])
914
- end
915
-
916
- it 'returns the correct result with an rrule of FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7' do
917
- rrule = 'FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7'
918
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
919
- timezone = 'America/Los_Angeles'
920
-
921
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
922
- expect(rrule.all).to match_array([
923
- Time.parse('Mon Jan 5 09:00:00 PST 1998'),
924
- Time.parse('Wed Jan 7 09:00:00 PST 1998'),
925
- Time.parse('Thu Mar 5 09:00:00 PST 1998'),
926
- Time.parse('Sat Mar 7 09:00:00 PST 1998')
927
- ])
928
- end
929
-
930
- it 'returns the correct result with an rrule of FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
931
- rrule = 'FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
932
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
933
- timezone = 'America/Los_Angeles'
934
-
935
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
936
- expect(rrule.all).to match_array([
937
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
938
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
939
- Time.parse('Thu Mar 1 09:00:00 PST 2001'),
940
- Time.parse('Tue Jan 1 09:00:00 PST 2002')
941
- ])
942
- end
943
-
944
- it 'returns the correct result with an rrule of FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH' do
945
- rrule = 'FREQ=DAILY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH'
946
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
947
- timezone = 'America/Los_Angeles'
948
-
949
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
950
- expect(rrule.all).to match_array([
951
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
952
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
953
- Time.parse('Thu Jan 8 09:00:00 PST 1998'),
954
- Time.parse('Tue Jan 13 09:00:00 PST 1998')
955
- ])
956
- end
957
-
958
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=4;BYMONTHDAY=1,3' do
959
- rrule = 'FREQ=DAILY;COUNT=4;BYMONTHDAY=1,3'
960
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
961
- timezone = 'America/Los_Angeles'
962
-
963
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
964
- expect(rrule.all).to match_array([
965
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
966
- Time.parse('Wed Oct 1 09:00:00 PDT 1997'),
967
- Time.parse('Fri Oct 3 09:00:00 PDT 1997'),
968
- Time.parse('Sat Nov 1 09:00:00 PST 1997')
969
- ])
970
- end
971
-
972
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
973
- rrule = 'FREQ=DAILY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
974
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
975
- timezone = 'America/Los_Angeles'
976
-
977
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
978
- expect(rrule.all).to match_array([
979
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
980
- Time.parse('Tue Feb 3 09:00:00 PST 1998'),
981
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
982
- Time.parse('Tue Sep 1 09:00:00 PDT 1998')
983
- ])
984
- end
985
-
986
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=3;BYDAY=TU,TH' do
987
- rrule = 'FREQ=DAILY;COUNT=3;BYDAY=TU,TH'
988
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
989
- timezone = 'America/Los_Angeles'
990
-
991
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
992
- expect(rrule.all).to match_array([
993
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
994
- Time.parse('Thu Sep 4 09:00:00 PDT 1997'),
995
- Time.parse('Tue Sep 9 09:00:00 PDT 1997')
996
- ])
997
- end
998
-
999
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=3;INTERVAL=2' do
1000
- rrule = 'FREQ=DAILY;COUNT=3;INTERVAL=2'
1001
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1002
- timezone = 'America/Los_Angeles'
1003
-
1004
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1005
- expect(rrule.all).to match_array([
1006
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1007
- Time.parse('Thu Sep 4 09:00:00 PDT 1997'),
1008
- Time.parse('Sat Sep 6 09:00:00 PDT 1997')
1009
- ])
1010
- end
1011
-
1012
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=3;INTERVAL=92' do
1013
- rrule = 'FREQ=DAILY;COUNT=3;INTERVAL=92'
1014
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1015
- timezone = 'America/Los_Angeles'
1016
-
1017
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1018
- expect(rrule.all).to match_array([
1019
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1020
- Time.parse('Wed Dec 3 09:00:00 PST 1997'),
1021
- Time.parse('Thu Mar 5 09:00:00 PST 1998')
1022
- ])
1023
- end
1024
-
1025
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=2;COUNT=1;BYMONTHDAY=31' do
1026
- rrule = 'FREQ=YEARLY;BYMONTH=2;COUNT=1;BYMONTHDAY=31'
1027
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 9997')
1028
- timezone = 'America/Los_Angeles'
1029
-
1030
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1031
- expect(rrule.all).to be_empty
1032
- end
1033
-
1034
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3' do
1035
- rrule = 'FREQ=MONTHLY;COUNT=3'
1036
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1037
- timezone = 'America/Los_Angeles'
1038
-
1039
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1040
- expect(rrule.all).to match_array([
1041
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1042
- Time.parse('Thu Oct 2 09:00:00 PDT 1997'),
1043
- Time.parse('Sun Nov 2 09:00:00 PST 1997')
1044
- ])
1045
- end
1046
-
1047
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4' do
1048
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4'
1049
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1050
- timezone = 'America/Los_Angeles'
1051
-
1052
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1053
- expect(rrule.all).to match_array([
1054
- Time.parse('Fri Jan 2 09:00:00 PST 1998'),
1055
- Time.parse('Mon Mar 2 09:00:00 PST 1998'),
1056
- Time.parse('Sat Jan 2 09:00:00 PST 1999'),
1057
- Time.parse('Tue Mar 2 09:00:00 PST 1999')
1058
- ])
1059
- end
1060
-
1061
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7' do
1062
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7'
1063
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1064
- timezone = 'America/Los_Angeles'
1065
-
1066
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1067
- expect(rrule.all).to match_array([
1068
- Time.parse('Mon Jan 5 09:00:00 PST 1998'),
1069
- Time.parse('Wed Jan 7 09:00:00 PST 1998'),
1070
- Time.parse('Thu Mar 5 09:00:00 PST 1998'),
1071
- Time.parse('Sat Mar 7 09:00:00 PST 1998')
1072
- ])
1073
- end
1074
-
1075
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
1076
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
1077
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1078
- timezone = 'America/Los_Angeles'
1079
-
1080
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1081
- expect(rrule.all).to match_array([
1082
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1083
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1084
- Time.parse('Thu Mar 1 09:00:00 PST 2001'),
1085
- Time.parse('Tue Jan 1 09:00:00 PST 2002')
1086
- ])
1087
- end
1088
-
1089
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=1TU,-1TH' do
1090
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=1TU,-1TH'
1091
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1092
- timezone = 'America/Los_Angeles'
1093
-
1094
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1095
- expect(rrule.all).to match_array([
1096
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1097
- Time.parse('Thu Jan 29 09:00:00 PST 1998'),
1098
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1099
- Time.parse('Thu Mar 26 09:00:00 PST 1998')
1100
- ])
1101
- end
1102
-
1103
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=3TU,-3TH' do
1104
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=3TU,-3TH'
1105
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1106
- timezone = 'America/Los_Angeles'
1107
-
1108
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1109
- expect(rrule.all).to match_array([
1110
- Time.parse('Thu Jan 15 09:00:00 PST 1998'),
1111
- Time.parse('Tue Jan 20 09:00:00 PST 1998'),
1112
- Time.parse('Thu Mar 12 09:00:00 PST 1998'),
1113
- Time.parse('Tue Mar 17 09:00:00 PST 1998')
1114
- ])
1115
- end
1116
-
1117
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH' do
1118
- rrule = 'FREQ=MONTHLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH'
1119
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1120
- timezone = 'America/Los_Angeles'
1121
-
1122
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1123
- expect(rrule.all).to match_array([
1124
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1125
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1126
- Time.parse('Thu Jan 8 09:00:00 PST 1998'),
1127
- Time.parse('Tue Jan 13 09:00:00 PST 1998')
1128
- ])
1129
- end
1130
-
1131
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=4;BYMONTHDAY=1,3' do
1132
- rrule = 'FREQ=MONTHLY;COUNT=4;BYMONTHDAY=1,3'
1133
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1134
- timezone = 'America/Los_Angeles'
1135
-
1136
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1137
- expect(rrule.all).to match_array([
1138
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
1139
- Time.parse('Wed Oct 1 09:00:00 PDT 1997'),
1140
- Time.parse('Fri Oct 3 09:00:00 PDT 1997'),
1141
- Time.parse('Sat Nov 1 09:00:00 PST 1997')
1142
- ])
1143
- end
1144
-
1145
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
1146
- rrule = 'FREQ=MONTHLY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
1147
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1148
- timezone = 'America/Los_Angeles'
1149
-
1150
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1151
- expect(rrule.all).to match_array([
1152
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1153
- Time.parse('Tue Feb 3 09:00:00 PST 1998'),
1154
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1155
- Time.parse('Tue Sep 1 09:00:00 PDT 1998')
1156
- ])
1157
- end
1158
-
1159
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3;BYDAY=1TU,-1TH' do
1160
- rrule = 'FREQ=MONTHLY;COUNT=3;BYDAY=1TU,-1TH'
1161
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1162
- timezone = 'America/Los_Angeles'
1163
-
1164
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1165
- expect(rrule.all).to match_array([
1166
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1167
- Time.parse('Thu Sep 25 09:00:00 PDT 1997'),
1168
- Time.parse('Tue Oct 7 09:00:00 PDT 1997')
1169
- ])
1170
- end
1171
-
1172
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=4;BYDAY=3TU,-3TH' do
1173
- rrule = 'FREQ=MONTHLY;COUNT=4;BYDAY=3TU,-3TH'
1174
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1175
- timezone = 'America/Los_Angeles'
1176
-
1177
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1178
- expect(rrule.all).to match_array([
1179
- Time.parse('Thu Sep 11 09:00:00 PDT 1997'),
1180
- Time.parse('Tue Sep 16 09:00:00 PDT 1997'),
1181
- Time.parse('Thu Oct 16 09:00:00 PDT 1997'),
1182
- Time.parse('Tue Oct 21 09:00:00 PDT 1997')
1183
- ])
1184
- end
1185
-
1186
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3;BYDAY=TU,TH' do
1187
- rrule = 'FREQ=MONTHLY;COUNT=3;BYDAY=TU,TH'
1188
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1189
- timezone = 'America/Los_Angeles'
1190
-
1191
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1192
- expect(rrule.all).to match_array([
1193
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1194
- Time.parse('Thu Sep 4 09:00:00 PDT 1997'),
1195
- Time.parse('Tue Sep 9 09:00:00 PDT 1997')
1196
- ])
1197
- end
1198
-
1199
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3;INTERVAL=2' do
1200
- rrule = 'FREQ=MONTHLY;COUNT=3;INTERVAL=2'
1201
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1202
- timezone = 'America/Los_Angeles'
1203
-
1204
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1205
- expect(rrule.all).to match_array([
1206
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1207
- Time.parse('Sun Nov 2 09:00:00 PST 1997'),
1208
- Time.parse('Fri Jan 2 09:00:00 PST 1998')
1209
- ])
1210
- end
1211
-
1212
- it 'returns the correct result with an rrule of FREQ=MONTHLY;COUNT=3;INTERVAL=18' do
1213
- rrule = 'FREQ=MONTHLY;COUNT=3;INTERVAL=18'
1214
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1215
- timezone = 'America/Los_Angeles'
1216
-
1217
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1218
- expect(rrule.all).to match_array([
1219
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1220
- Time.parse('Tue Mar 2 09:00:00 PST 1999'),
1221
- Time.parse('Sat Sep 2 09:00:00 PDT 2000')
1222
- ])
1223
- end
1224
-
1225
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=19970901T170000Z' do
1226
- rrule = 'FREQ=DAILY;UNTIL=19970901T170000Z'
1227
- dtstart = Time.parse('Mon Sep 1 10:00:00 PDT 1997')
1228
- timezone = 'America/Los_Angeles'
1229
-
1230
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1231
- expect(rrule.all).to match_array([
1232
- Time.parse('Mon Sep 1 10:00:00 PDT 1997')
1233
- ])
1234
- end
1235
-
1236
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=19970904T160000Z' do
1237
- rrule = 'FREQ=DAILY;UNTIL=19970904T160000Z'
1238
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1239
- timezone = 'America/Los_Angeles'
1240
-
1241
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1242
- expect(rrule.all).to match_array([
1243
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1244
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
1245
- Time.parse('Thu Sep 4 09:00:00 PDT 1997')
1246
- ])
1247
- end
1248
-
1249
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=19970905T150000Z' do
1250
- rrule = 'FREQ=DAILY;UNTIL=19970905T150000Z'
1251
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1252
- timezone = 'America/Los_Angeles'
1253
-
1254
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1255
- expect(rrule.all).to match_array([
1256
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1257
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
1258
- Time.parse('Thu Sep 4 09:00:00 PDT 1997')
1259
- ])
1260
- end
1261
-
1262
- it 'returns the correct result with an rrule of FREQ=DAILY;UNTIL=19970902T160000Z' do
1263
- rrule = 'FREQ=DAILY;UNTIL=19970902T160000Z'
1264
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1265
- timezone = 'America/Los_Angeles'
1266
-
1267
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1268
- expect(rrule.all).to match_array([
1269
- Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1270
- ])
1271
- end
1272
-
1273
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3' do
1274
- rrule = 'FREQ=WEEKLY;COUNT=3'
1275
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1276
- timezone = 'America/Los_Angeles'
1277
-
1278
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1279
- expect(rrule.all).to match_array([
1280
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1281
- Time.parse('Tue Sep 9 09:00:00 PDT 1997'),
1282
- Time.parse('Tue Sep 16 09:00:00 PDT 1997')
1283
- ])
1284
- end
1285
-
1286
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYMONTH=1,3;COUNT=4' do
1287
- rrule = 'FREQ=WEEKLY;BYMONTH=1,3;COUNT=4'
1288
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1289
- timezone = 'America/Los_Angeles'
1290
-
1291
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1292
- expect(rrule.all).to match_array([
1293
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1294
- Time.parse('Tue Jan 13 09:00:00 PST 1998'),
1295
- Time.parse('Tue Jan 20 09:00:00 PST 1998'),
1296
- Time.parse('Tue Jan 27 09:00:00 PST 1998')
1297
- ])
1298
- end
1299
-
1300
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH' do
1301
- rrule = 'FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH'
1302
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1303
- timezone = 'America/Los_Angeles'
1304
-
1305
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1306
- expect(rrule.all).to match_array([
1307
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1308
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1309
- Time.parse('Thu Jan 8 09:00:00 PST 1998'),
1310
- Time.parse('Tue Jan 13 09:00:00 PST 1998')
1311
- ])
1312
- end
1313
-
1314
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3;BYDAY=TU,TH' do
1315
- rrule = 'FREQ=WEEKLY;COUNT=3;BYDAY=TU,TH'
1316
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1317
- timezone = 'America/Los_Angeles'
1318
-
1319
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1320
- expect(rrule.all).to match_array([
1321
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1322
- Time.parse('Thu Sep 4 09:00:00 PDT 1997'),
1323
- Time.parse('Tue Sep 9 09:00:00 PDT 1997')
1324
- ])
1325
- end
1326
-
1327
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3;INTERVAL=2' do
1328
- rrule = 'FREQ=WEEKLY;COUNT=3;INTERVAL=2'
1329
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1330
- timezone = 'America/Los_Angeles'
1331
-
1332
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1333
- expect(rrule.all).to match_array([
1334
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1335
- Time.parse('Tue Sep 16 09:00:00 PDT 1997'),
1336
- Time.parse('Tue Sep 30 09:00:00 PDT 1997')
1337
- ])
1338
- end
1339
-
1340
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3;INTERVAL=20' do
1341
- rrule = 'FREQ=WEEKLY;COUNT=3;INTERVAL=20'
1342
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1343
- timezone = 'America/Los_Angeles'
1344
-
1345
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1346
- expect(rrule.all).to match_array([
1347
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1348
- Time.parse('Tue Jan 20 09:00:00 PST 1998'),
1349
- Time.parse('Tue Jun 9 09:00:00 PDT 1998')
1350
- ])
1351
- end
1352
-
1353
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3;BYDAY=TU,SU;WKST=MO;INTERVAL=2' do
1354
- rrule = 'FREQ=WEEKLY;COUNT=3;BYDAY=TU,SU;WKST=MO;INTERVAL=2'
1355
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1356
- timezone = 'America/Los_Angeles'
1357
-
1358
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1359
- expect(rrule.all).to match_array([
1360
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1361
- Time.parse('Sun Sep 7 09:00:00 PDT 1997'),
1362
- Time.parse('Tue Sep 16 09:00:00 PDT 1997')
1363
- ])
1364
- end
1365
-
1366
- it 'returns the correct result with an rrule of FREQ=WEEKLY;COUNT=3;BYDAY=TU,SU;WKST=SU;INTERVAL=2' do
1367
- rrule = 'FREQ=WEEKLY;COUNT=3;BYDAY=TU,SU;WKST=SU;INTERVAL=2'
1368
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1369
- timezone = 'America/Los_Angeles'
1370
-
1371
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1372
- expect(rrule.all).to match_array([
1373
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1374
- Time.parse('Sun Sep 14 09:00:00 PDT 1997'),
1375
- Time.parse('Tue Sep 16 09:00:00 PDT 1997')
1376
- ])
1377
- end
1378
-
1379
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=3' do
1380
- rrule = 'FREQ=YEARLY;COUNT=3'
1381
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1382
- timezone = 'America/Los_Angeles'
1383
-
1384
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1385
- expect(rrule.all).to match_array([
1386
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1387
- Time.parse('Wed Sep 2 09:00:00 PDT 1998'),
1388
- Time.parse('Thu Sep 2 09:00:00 PDT 1999')
1389
- ])
1390
- end
1391
-
1392
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4' do
1393
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4'
1394
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1395
- timezone = 'America/Los_Angeles'
1396
-
1397
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1398
- expect(rrule.all).to match_array([
1399
- Time.parse('Fri Jan 2 09:00:00 PST 1998'),
1400
- Time.parse('Mon Mar 2 09:00:00 PST 1998'),
1401
- Time.parse('Sat Jan 2 09:00:00 PST 1999'),
1402
- Time.parse('Tue Mar 2 09:00:00 PST 1999')
1403
- ])
1404
- end
1405
-
1406
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7' do
1407
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYMONTHDAY=5,7'
1408
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1409
- timezone = 'America/Los_Angeles'
1410
-
1411
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1412
- expect(rrule.all).to match_array([
1413
- Time.parse('Mon Jan 5 09:00:00 PST 1998'),
1414
- Time.parse('Wed Jan 7 09:00:00 PST 1998'),
1415
- Time.parse('Thu Mar 5 09:00:00 PST 1998'),
1416
- Time.parse('Sat Mar 7 09:00:00 PST 1998')
1417
- ])
1418
- end
1419
-
1420
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
1421
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
1422
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1423
- timezone = 'America/Los_Angeles'
1424
-
1425
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1426
- expect(rrule.all).to match_array([
1427
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1428
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1429
- Time.parse('Thu Mar 1 09:00:00 PST 2001'),
1430
- Time.parse('Tue Jan 1 09:00:00 PST 2002')
1431
- ])
1432
- end
1433
-
1434
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=1TU,-1TH' do
1435
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=1TU,-1TH'
1436
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1437
- timezone = 'America/Los_Angeles'
1438
-
1439
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1440
- expect(rrule.all).to match_array([
1441
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1442
- Time.parse('Thu Jan 29 09:00:00 PST 1998'),
1443
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1444
- Time.parse('Thu Mar 26 09:00:00 PST 1998')
1445
- ])
1446
- end
1447
-
1448
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=3TU,-3TH' do
1449
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=3TU,-3TH'
1450
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1451
- timezone = 'America/Los_Angeles'
1452
-
1453
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1454
- expect(rrule.all).to match_array([
1455
- Time.parse('Thu Jan 15 09:00:00 PST 1998'),
1456
- Time.parse('Tue Jan 20 09:00:00 PST 1998'),
1457
- Time.parse('Thu Mar 12 09:00:00 PST 1998'),
1458
- Time.parse('Tue Mar 17 09:00:00 PST 1998')
1459
- ])
1460
- end
1461
-
1462
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH' do
1463
- rrule = 'FREQ=YEARLY;BYMONTH=1,3;COUNT=4;BYDAY=TU,TH'
1464
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1465
- timezone = 'America/Los_Angeles'
1466
-
1467
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1468
- expect(rrule.all).to match_array([
1469
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1470
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1471
- Time.parse('Thu Jan 8 09:00:00 PST 1998'),
1472
- Time.parse('Tue Jan 13 09:00:00 PST 1998')
1473
- ])
1474
- end
1475
-
1476
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYMONTHDAY=1,3' do
1477
- rrule = 'FREQ=YEARLY;COUNT=4;BYMONTHDAY=1,3'
1478
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1479
- timezone = 'America/Los_Angeles'
1480
-
1481
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1482
- expect(rrule.all).to match_array([
1483
- Time.parse('Wed Sep 3 09:00:00 PDT 1997'),
1484
- Time.parse('Wed Oct 1 09:00:00 PDT 1997'),
1485
- Time.parse('Fri Oct 3 09:00:00 PDT 1997'),
1486
- Time.parse('Sat Nov 1 09:00:00 PST 1997')
1487
- ])
1488
- end
1489
-
1490
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3' do
1491
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=TU,TH;BYMONTHDAY=1,3'
1492
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1493
- timezone = 'America/Los_Angeles'
1494
-
1495
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1496
- expect(rrule.all).to match_array([
1497
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1498
- Time.parse('Tue Feb 3 09:00:00 PST 1998'),
1499
- Time.parse('Tue Mar 3 09:00:00 PST 1998'),
1500
- Time.parse('Tue Sep 1 09:00:00 PDT 1998')
1501
- ])
1502
- end
1503
-
1504
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=1TU,-1TH' do
1505
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=1TU,-1TH'
1506
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1507
- timezone = 'America/Los_Angeles'
1508
-
1509
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1510
- expect(rrule.all).to match_array([
1511
- Time.parse('Thu Dec 25 09:00:00 PST 1997'),
1512
- Time.parse('Tue Jan 6 09:00:00 PST 1998'),
1513
- Time.parse('Thu Dec 31 09:00:00 PST 1998'),
1514
- Time.parse('Tue Jan 5 09:00:00 PST 1999')
1515
- ])
1516
- end
1517
-
1518
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=3TU,-3TH' do
1519
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=3TU,-3TH'
1520
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1521
- timezone = 'America/Los_Angeles'
1522
-
1523
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1524
- expect(rrule.all).to match_array([
1525
- Time.parse('Thu Dec 11 09:00:00 PST 1997'),
1526
- Time.parse('Tue Jan 20 09:00:00 PST 1998'),
1527
- Time.parse('Thu Dec 17 09:00:00 PST 1998'),
1528
- Time.parse('Tue Jan 19 09:00:00 PST 1999')
1529
- ])
1530
- end
1531
-
1532
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=3;BYDAY=TU,TH' do
1533
- rrule = 'FREQ=YEARLY;COUNT=3;BYDAY=TU,TH'
1534
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1535
- timezone = 'America/Los_Angeles'
1536
-
1537
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1538
- expect(rrule.all).to match_array([
1539
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1540
- Time.parse('Thu Sep 4 09:00:00 PDT 1997'),
1541
- Time.parse('Tue Sep 9 09:00:00 PDT 1997')
1542
- ])
1543
- end
1544
-
1545
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYWEEKNO=20' do
1546
- rrule = 'FREQ=YEARLY;COUNT=4;BYWEEKNO=20'
1547
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1548
- timezone = 'America/Los_Angeles'
1549
-
1550
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1551
- expect(rrule.all).to match_array([
1552
- Time.parse('Mon May 11 09:00:00 PDT 1998'),
1553
- Time.parse('Tue May 12 09:00:00 PDT 1998'),
1554
- Time.parse('Wed May 13 09:00:00 PDT 1998'),
1555
- Time.parse('Thu May 14 09:00:00 PDT 1998')
1556
- ])
1557
- end
1558
-
1559
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=MO;BYWEEKNO=1' do
1560
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=MO;BYWEEKNO=1'
1561
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1562
- timezone = 'America/Los_Angeles'
1563
-
1564
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1565
- expect(rrule.all).to match_array([
1566
- Time.parse('Mon Dec 29 09:00:00 PST 1997'),
1567
- Time.parse('Mon Jan 4 09:00:00 PST 1999'),
1568
- Time.parse('Mon Jan 3 09:00:00 PST 2000'),
1569
- Time.parse('Mon Jan 1 09:00:00 PST 2001')
1570
- ])
1571
- end
1572
-
1573
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=MO;BYWEEKNO=53' do
1574
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=MO;BYWEEKNO=53'
1575
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1576
- timezone = 'America/Los_Angeles'
1577
-
1578
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1579
- expect(rrule.all).to match_array([
1580
- Time.parse('Mon Dec 28 09:00:00 PST 1998'),
1581
- Time.parse('Mon Dec 27 09:00:00 PST 2004'),
1582
- Time.parse('Mon Dec 28 09:00:00 PST 2009'),
1583
- Time.parse('Mon Dec 28 09:00:00 PST 2015')
1584
- ])
1585
- end
1586
-
1587
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=SU;BYWEEKNO=52' do
1588
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=SU;BYWEEKNO=52'
1589
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1590
- timezone = 'America/Los_Angeles'
1591
-
1592
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1593
- expect(rrule.all).to match_array([
1594
- Time.parse('Sun Dec 28 09:00:00 PST 1997'),
1595
- Time.parse('Sun Dec 27 09:00:00 PST 1998'),
1596
- Time.parse('Sun Jan 2 09:00:00 PST 2000'),
1597
- Time.parse('Sun Dec 31 09:00:00 PST 2000')
1598
- ])
1599
- end
1600
-
1601
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=4;BYDAY=SU;BYWEEKNO=-1' do
1602
- rrule = 'FREQ=YEARLY;COUNT=4;BYDAY=SU;BYWEEKNO=-1'
1603
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1604
- timezone = 'America/Los_Angeles'
1605
-
1606
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1607
- expect(rrule.all).to match_array([
1608
- Time.parse('Sun Dec 28 09:00:00 PST 1997'),
1609
- Time.parse('Sun Jan 3 09:00:00 PST 1999'),
1610
- Time.parse('Sun Jan 2 09:00:00 PST 2000'),
1611
- Time.parse('Sun Dec 31 09:00:00 PST 2000')
1612
- ])
1613
- end
1614
-
1615
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=5;BYYEARDAY=1,100,200,365' do
1616
- rrule = 'FREQ=YEARLY;COUNT=5;BYYEARDAY=1,100,200,365'
1617
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1618
- timezone = 'America/Los_Angeles'
1619
-
1620
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1621
- expect(rrule.all).to match_array([
1622
- Time.parse('Wed Dec 31 09:00:00 PST 1997'),
1623
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1624
- Time.parse('Fri Apr 10 09:00:00 PDT 1998'),
1625
- Time.parse('Sun Jul 19 09:00:00 PDT 1998'),
1626
- Time.parse('Thu Dec 31 09:00:00 PST 1998')
1627
- ])
1628
- end
1629
-
1630
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=5;BYYEARDAY=-365,-266,-166,-1' do
1631
- rrule = 'FREQ=YEARLY;COUNT=5;BYYEARDAY=-365,-266,-166,-1'
1632
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1633
- timezone = 'America/Los_Angeles'
1634
-
1635
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1636
- expect(rrule.all).to match_array([
1637
- Time.parse('Wed Dec 31 09:00:00 PST 1997'),
1638
- Time.parse('Thu Jan 1 09:00:00 PST 1998'),
1639
- Time.parse('Fri Apr 10 09:00:00 PDT 1998'),
1640
- Time.parse('Sun Jul 19 09:00:00 PDT 1998'),
1641
- Time.parse('Thu Dec 31 09:00:00 PST 1998')
1642
- ])
1643
- end
1644
-
1645
- it 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=3;INTERVAL=2' do
1646
- rrule = 'FREQ=YEARLY;COUNT=3;INTERVAL=2'
1647
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1648
- timezone = 'America/Los_Angeles'
1649
-
1650
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1651
- expect(rrule.all).to match_array([
1652
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1653
- Time.parse('Thu Sep 2 09:00:00 PDT 1999'),
1654
- Time.parse('Sun Sep 2 09:00:00 PDT 2001')
1655
- ])
1656
- end
1657
-
1658
- # Ruby's Time class only properly handles years up to 2038, and so gives an incorrect
1659
- # offset for the last two occurrences here.
1660
- xit 'returns the correct result with an rrule of FREQ=YEARLY;COUNT=3;INTERVAL=100' do
1661
- rrule = 'FREQ=YEARLY;COUNT=3;INTERVAL=100'
1662
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
1663
- timezone = 'America/Los_Angeles'
1664
-
1665
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1666
- expect(rrule.all).to match_array([
1667
- Time.parse('Tue Sep 2 09:00:00 PDT 1997'),
1668
- Time.parse('Mon Sep 2 09:00:00 PDT 2097'),
1669
- Time.parse('Sat Sep 2 09:00:00 PDT 2197')
1670
- ])
1671
- end
1672
-
1673
- xit 'returns the correct result with an rrule of FREQ=YEARLY;INTERVAL=1;BYDAY=MO,-1TU;UNTIL=20160901T200000Z' do
1674
- rrule = 'FREQ=YEARLY;INTERVAL=1;BYDAY=MO,-1TU;UNTIL=20160901T200000Z'
1675
- dtstart = Time.parse('Mon Sep 1 19:00:00 PDT 2014')
1676
- timezone = 'America/Los_Angeles'
1677
-
1678
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1679
- expect(rrule.all).to match_array([
1680
- Time.parse('Mon Sep 1 19:00:00 PDT 2014'),
1681
- Time.parse('Mon Sep 8 19:00:00 PDT 2014'),
1682
- Time.parse('Mon Sep 15 19:00:00 PDT 2014'),
1683
- Time.parse('Mon Sep 22 19:00:00 PDT 2014'),
1684
- Time.parse('Mon Sep 29 19:00:00 PDT 2014'),
1685
- Time.parse('Mon Oct 6 19:00:00 PDT 2014'),
1686
- Time.parse('Mon Oct 13 19:00:00 PDT 2014'),
1687
- Time.parse('Mon Oct 20 19:00:00 PDT 2014'),
1688
- Time.parse('Mon Oct 27 19:00:00 PDT 2014'),
1689
- Time.parse('Mon Nov 3 19:00:00 PST 2014'),
1690
- Time.parse('Mon Nov 10 19:00:00 PST 2014'),
1691
- Time.parse('Mon Nov 17 19:00:00 PST 2014'),
1692
- Time.parse('Mon Nov 24 19:00:00 PST 2014'),
1693
- Time.parse('Mon Dec 1 19:00:00 PST 2014'),
1694
- Time.parse('Mon Dec 8 19:00:00 PST 2014'),
1695
- Time.parse('Mon Dec 15 19:00:00 PST 2014'),
1696
- Time.parse('Mon Dec 22 19:00:00 PST 2014'),
1697
- Time.parse('Mon Dec 29 19:00:00 PST 2014'),
1698
- Time.parse('Tue Dec 30 19:00:00 PST 2014'),
1699
- Time.parse('Mon Jan 5 19:00:00 PST 2015'),
1700
- Time.parse('Mon Jan 12 19:00:00 PST 2015'),
1701
- Time.parse('Mon Jan 19 19:00:00 PST 2015'),
1702
- Time.parse('Mon Jan 26 19:00:00 PST 2015'),
1703
- Time.parse('Mon Feb 2 19:00:00 PST 2015'),
1704
- Time.parse('Mon Feb 9 19:00:00 PST 2015'),
1705
- Time.parse('Mon Feb 16 19:00:00 PST 2015'),
1706
- Time.parse('Mon Feb 23 19:00:00 PST 2015'),
1707
- Time.parse('Mon Mar 2 19:00:00 PST 2015'),
1708
- Time.parse('Mon Mar 9 19:00:00 PDT 2015'),
1709
- Time.parse('Mon Mar 16 19:00:00 PDT 2015'),
1710
- Time.parse('Mon Mar 23 19:00:00 PDT 2015'),
1711
- Time.parse('Mon Mar 30 19:00:00 PDT 2015'),
1712
- Time.parse('Mon Apr 6 19:00:00 PDT 2015'),
1713
- Time.parse('Mon Apr 13 19:00:00 PDT 2015'),
1714
- Time.parse('Mon Apr 20 19:00:00 PDT 2015'),
1715
- Time.parse('Mon Apr 27 19:00:00 PDT 2015'),
1716
- Time.parse('Mon May 4 19:00:00 PDT 2015'),
1717
- Time.parse('Mon May 11 19:00:00 PDT 2015'),
1718
- Time.parse('Mon May 18 19:00:00 PDT 2015'),
1719
- Time.parse('Mon May 25 19:00:00 PDT 2015'),
1720
- Time.parse('Mon Jun 1 19:00:00 PDT 2015'),
1721
- Time.parse('Mon Jun 8 19:00:00 PDT 2015'),
1722
- Time.parse('Mon Jun 15 19:00:00 PDT 2015'),
1723
- Time.parse('Mon Jun 22 19:00:00 PDT 2015'),
1724
- Time.parse('Mon Jun 29 19:00:00 PDT 2015'),
1725
- Time.parse('Mon Jul 6 19:00:00 PDT 2015'),
1726
- Time.parse('Mon Jul 13 19:00:00 PDT 2015'),
1727
- Time.parse('Mon Jul 20 19:00:00 PDT 2015'),
1728
- Time.parse('Mon Jul 27 19:00:00 PDT 2015'),
1729
- Time.parse('Mon Aug 3 19:00:00 PDT 2015'),
1730
- Time.parse('Mon Aug 10 19:00:00 PDT 2015'),
1731
- Time.parse('Mon Aug 17 19:00:00 PDT 2015'),
1732
- Time.parse('Mon Aug 24 19:00:00 PDT 2015'),
1733
- Time.parse('Mon Aug 31 19:00:00 PDT 2015'),
1734
- Time.parse('Mon Sep 7 19:00:00 PDT 2015'),
1735
- Time.parse('Mon Sep 14 19:00:00 PDT 2015'),
1736
- Time.parse('Mon Sep 21 19:00:00 PDT 2015'),
1737
- Time.parse('Mon Sep 28 19:00:00 PDT 2015'),
1738
- Time.parse('Mon Oct 5 19:00:00 PDT 2015'),
1739
- Time.parse('Mon Oct 12 19:00:00 PDT 2015'),
1740
- Time.parse('Mon Oct 19 19:00:00 PDT 2015'),
1741
- Time.parse('Mon Oct 26 19:00:00 PDT 2015'),
1742
- Time.parse('Mon Nov 2 19:00:00 PST 2015'),
1743
- Time.parse('Mon Nov 9 19:00:00 PST 2015'),
1744
- Time.parse('Mon Nov 16 19:00:00 PST 2015'),
1745
- Time.parse('Mon Nov 23 19:00:00 PST 2015'),
1746
- Time.parse('Mon Nov 30 19:00:00 PST 2015'),
1747
- Time.parse('Mon Dec 7 19:00:00 PST 2015'),
1748
- Time.parse('Mon Dec 14 19:00:00 PST 2015'),
1749
- Time.parse('Mon Dec 21 19:00:00 PST 2015'),
1750
- Time.parse('Mon Dec 28 19:00:00 PST 2015'),
1751
- Time.parse('Tue Dec 29 19:00:00 PST 2015'),
1752
- Time.parse('Mon Jan 4 19:00:00 PST 2016'),
1753
- Time.parse('Mon Jan 11 19:00:00 PST 2016'),
1754
- Time.parse('Mon Jan 18 19:00:00 PST 2016'),
1755
- Time.parse('Mon Jan 25 19:00:00 PST 2016'),
1756
- Time.parse('Mon Feb 1 19:00:00 PST 2016'),
1757
- Time.parse('Mon Feb 8 19:00:00 PST 2016'),
1758
- Time.parse('Mon Feb 15 19:00:00 PST 2016'),
1759
- Time.parse('Mon Feb 22 19:00:00 PST 2016'),
1760
- Time.parse('Mon Feb 29 19:00:00 PST 2016'),
1761
- Time.parse('Mon Mar 7 19:00:00 PST 2016'),
1762
- Time.parse('Mon Mar 14 19:00:00 PDT 2016'),
1763
- Time.parse('Mon Mar 21 19:00:00 PDT 2016'),
1764
- Time.parse('Mon Mar 28 19:00:00 PDT 2016'),
1765
- Time.parse('Mon Apr 4 19:00:00 PDT 2016'),
1766
- Time.parse('Mon Apr 11 19:00:00 PDT 2016'),
1767
- Time.parse('Mon Apr 18 19:00:00 PDT 2016'),
1768
- Time.parse('Mon Apr 25 19:00:00 PDT 2016'),
1769
- Time.parse('Mon May 2 19:00:00 PDT 2016'),
1770
- Time.parse('Mon May 9 19:00:00 PDT 2016'),
1771
- Time.parse('Mon May 16 19:00:00 PDT 2016'),
1772
- Time.parse('Mon May 23 19:00:00 PDT 2016'),
1773
- Time.parse('Mon May 30 19:00:00 PDT 2016'),
1774
- Time.parse('Mon Jun 6 19:00:00 PDT 2016'),
1775
- Time.parse('Mon Jun 13 19:00:00 PDT 2016'),
1776
- Time.parse('Mon Jun 20 19:00:00 PDT 2016'),
1777
- Time.parse('Mon Jun 27 19:00:00 PDT 2016'),
1778
- Time.parse('Mon Jul 4 19:00:00 PDT 2016'),
1779
- Time.parse('Mon Jul 11 19:00:00 PDT 2016'),
1780
- Time.parse('Mon Jul 18 19:00:00 PDT 2016'),
1781
- Time.parse('Mon Jul 25 19:00:00 PDT 2016'),
1782
- Time.parse('Mon Aug 1 19:00:00 PDT 2016'),
1783
- Time.parse('Mon Aug 8 19:00:00 PDT 2016'),
1784
- Time.parse('Mon Aug 15 19:00:00 PDT 2016'),
1785
- Time.parse('Mon Aug 22 19:00:00 PDT 2016'),
1786
- Time.parse('Mon Aug 29 19:00:00 PDT 2016')
1787
- ])
1788
- end
1789
- end
1790
-
1791
- describe '#between' do
1792
- context 'server env timezone is different from the passed timezone' do
1793
- around do |example|
1794
- old_tz = ENV['TZ']
1795
- ENV['TZ'] = 'UTC'
1796
- example.run
1797
- ENV['TZ'] = old_tz
1798
- end
1799
-
1800
- it 'works when the day in the given timezone is different from the day in the server timezone' do
1801
- # any time from 17:00 to 23:59:59 broke old code, test all hours of the day
1802
- 0.upto(23) do |hour|
1803
- dtstart = Time.new(2018, 7, 1, hour, 0, 0, '-07:00')
1804
- rrule = RRule::Rule.new('FREQ=WEEKLY', dtstart: dtstart, tzid: 'America/Los_Angeles')
1805
- expect(rrule.between(dtstart, dtstart + 1.second)).to eq([dtstart])
1806
- end
1807
- end
1808
- end
1809
-
1810
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYSECOND=59;BYMINUTE=59;BYHOUR=23;WKST=SU' do
1811
- rrule = 'FREQ=WEEKLY;BYSECOND=59;BYMINUTE=59;BYHOUR=23;WKST=SU'
1812
- dtstart = DateTime.parse('2018-02-04 04:00:00 +1000')
1813
- timezone = 'Brisbane'
1814
-
1815
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1816
- expect(rrule.between(Time.parse('Sun, 08 Apr 2018 00:00:00 +0000'), Time.parse('Fri, 08 Jun 2018 23:59:59 +0000'))).to match_array([
1817
- Time.parse('Sun, 08 Apr 2018 23:59:59 +1000'),
1818
- Time.parse('Sun, 15 Apr 2018 23:59:59 +1000'),
1819
- Time.parse('Sun, 22 Apr 2018 23:59:59 +1000'),
1820
- Time.parse('Sun, 29 Apr 2018 23:59:59 +1000'),
1821
- Time.parse('Sun, 06 May 2018 23:59:59 +1000'),
1822
- Time.parse('Sun, 13 May 2018 23:59:59 +1000'),
1823
- Time.parse('Sun, 20 May 2018 23:59:59 +1000'),
1824
- Time.parse('Sun, 27 May 2018 23:59:59 +1000'),
1825
- Time.parse('Sun, 03 Jun 2018 23:59:59 +1000'),
1826
- ])
1827
- end
1828
-
1829
- it 'returns the correct result with an rrule of FREQ=DAILY;INTERVAL=2' do
1830
- rrule = 'FREQ=DAILY;INTERVAL=2'
1831
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
1832
- timezone = 'America/New_York'
1833
-
1834
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1835
- expect(rrule.between(Time.parse('Tue Sep 2 06:00:00 PDT 1997'), Time.parse('Wed Oct 22 06:00:00 PDT 1997'))).to match_array([
1836
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
1837
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
1838
- Time.parse('Sat Sep 6 06:00:00 PDT 1997'),
1839
- Time.parse('Mon Sep 8 06:00:00 PDT 1997'),
1840
- Time.parse('Wed Sep 10 06:00:00 PDT 1997'),
1841
- Time.parse('Fri Sep 12 06:00:00 PDT 1997'),
1842
- Time.parse('Sun Sep 14 06:00:00 PDT 1997'),
1843
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
1844
- Time.parse('Thu Sep 18 06:00:00 PDT 1997'),
1845
- Time.parse('Sat Sep 20 06:00:00 PDT 1997'),
1846
- Time.parse('Mon Sep 22 06:00:00 PDT 1997'),
1847
- Time.parse('Wed Sep 24 06:00:00 PDT 1997'),
1848
- Time.parse('Fri Sep 26 06:00:00 PDT 1997'),
1849
- Time.parse('Sun Sep 28 06:00:00 PDT 1997'),
1850
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
1851
- Time.parse('Thu Oct 2 06:00:00 PDT 1997'),
1852
- Time.parse('Sat Oct 4 06:00:00 PDT 1997'),
1853
- Time.parse('Mon Oct 6 06:00:00 PDT 1997'),
1854
- Time.parse('Wed Oct 8 06:00:00 PDT 1997'),
1855
- Time.parse('Fri Oct 10 06:00:00 PDT 1997'),
1856
- Time.parse('Sun Oct 12 06:00:00 PDT 1997'),
1857
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
1858
- Time.parse('Thu Oct 16 06:00:00 PDT 1997'),
1859
- Time.parse('Sat Oct 18 06:00:00 PDT 1997'),
1860
- Time.parse('Mon Oct 20 06:00:00 PDT 1997'),
1861
- Time.parse('Wed Oct 22 06:00:00 PDT 1997')
1862
- ])
1863
- end
1864
-
1865
- it 'returns the correct result with an rrule of FREQ=DAILY;INTERVAL=2 and a limit' do
1866
- rrule = 'FREQ=DAILY;INTERVAL=2'
1867
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
1868
- timezone = 'America/New_York'
1869
-
1870
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1871
- expect(rrule.between(Time.parse('Tue Sep 2 06:00:00 PDT 1997'), Time.parse('Wed Oct 22 06:00:00 PDT 1997'), limit: 5)).to match_array([
1872
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
1873
- Time.parse('Thu Sep 4 06:00:00 PDT 1997'),
1874
- Time.parse('Sat Sep 6 06:00:00 PDT 1997'),
1875
- Time.parse('Mon Sep 8 06:00:00 PDT 1997'),
1876
- Time.parse('Wed Sep 10 06:00:00 PDT 1997')
1877
- ])
1878
- end
1879
-
1880
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=2;WKST=SU' do
1881
- rrule = 'FREQ=WEEKLY;INTERVAL=2;WKST=SU'
1882
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
1883
- timezone = 'America/New_York'
1884
-
1885
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1886
- expect(rrule.between(Time.parse('Tue Sep 2 06:00:00 PDT 1997'), Time.parse('Tue Feb 17 06:00:00 PST 1998'))).to match_array([
1887
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
1888
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
1889
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
1890
- Time.parse('Tue Oct 14 06:00:00 PDT 1997'),
1891
- Time.parse('Tue Oct 28 06:00:00 PST 1997'),
1892
- Time.parse('Tue Nov 11 06:00:00 PST 1997'),
1893
- Time.parse('Tue Nov 25 06:00:00 PST 1997'),
1894
- Time.parse('Tue Dec 9 06:00:00 PST 1997'),
1895
- Time.parse('Tue Dec 23 06:00:00 PST 1997'),
1896
- Time.parse('Tue Jan 6 06:00:00 PST 1998'),
1897
- Time.parse('Tue Jan 20 06:00:00 PST 1998'),
1898
- Time.parse('Tue Feb 3 06:00:00 PST 1998'),
1899
- Time.parse('Tue Feb 17 06:00:00 PST 1998')
1900
- ])
1901
- end
1902
-
1903
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYMONTHDAY=-3' do
1904
- rrule = 'FREQ=MONTHLY;BYMONTHDAY=-3'
1905
- dtstart = Time.parse('Sun Sep 28 06:00:00 PDT 1997')
1906
- timezone = 'America/New_York'
1907
-
1908
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1909
- expect(rrule.between(Time.parse('Sun Sep 28 06:00:00 PDT 1997'), Time.parse('Thu Feb 26 06:00:00 PST 1998'))).to match_array([
1910
- Time.parse('Sun Sep 28 06:00:00 PDT 1997'),
1911
- Time.parse('Wed Oct 29 06:00:00 PST 1997'),
1912
- Time.parse('Fri Nov 28 06:00:00 PST 1997'),
1913
- Time.parse('Mon Dec 29 06:00:00 PST 1997'),
1914
- Time.parse('Thu Jan 29 06:00:00 PST 1998'),
1915
- Time.parse('Thu Feb 26 06:00:00 PST 1998')
1916
- ])
1917
- end
1918
-
1919
- it 'returns the correct result with an rrule of FREQ=MONTHLY;INTERVAL=2;BYDAY=TU' do
1920
- rrule = 'FREQ=MONTHLY;INTERVAL=2;BYDAY=TU'
1921
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
1922
- timezone = 'America/New_York'
1923
-
1924
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1925
- expect(rrule.between(Time.parse('Tue Sep 2 06:00:00 PDT 1997'), Time.parse('Tue Mar 31 06:00:00 PST 1998'))).to match_array([
1926
- Time.parse('Tue Sep 2 06:00:00 PDT 1997'),
1927
- Time.parse('Tue Sep 9 06:00:00 PDT 1997'),
1928
- Time.parse('Tue Sep 16 06:00:00 PDT 1997'),
1929
- Time.parse('Tue Sep 23 06:00:00 PDT 1997'),
1930
- Time.parse('Tue Sep 30 06:00:00 PDT 1997'),
1931
- Time.parse('Tue Nov 4 06:00:00 PST 1997'),
1932
- Time.parse('Tue Nov 11 06:00:00 PST 1997'),
1933
- Time.parse('Tue Nov 18 06:00:00 PST 1997'),
1934
- Time.parse('Tue Nov 25 06:00:00 PST 1997'),
1935
- Time.parse('Tue Jan 6 06:00:00 PST 1998'),
1936
- Time.parse('Tue Jan 13 06:00:00 PST 1998'),
1937
- Time.parse('Tue Jan 20 06:00:00 PST 1998'),
1938
- Time.parse('Tue Jan 27 06:00:00 PST 1998'),
1939
- Time.parse('Tue Mar 3 06:00:00 PST 1998'),
1940
- Time.parse('Tue Mar 10 06:00:00 PST 1998'),
1941
- Time.parse('Tue Mar 17 06:00:00 PST 1998'),
1942
- Time.parse('Tue Mar 24 06:00:00 PST 1998'),
1943
- Time.parse('Tue Mar 31 06:00:00 PST 1998')
1944
- ])
1945
- end
1946
-
1947
- xit 'returns the correct result with an rrule of FREQ=YEARLY;BYDAY=20MO' do
1948
- rrule = 'FREQ=YEARLY;BYDAY=20MO'
1949
- dtstart = Time.parse('Mon May 19 06:00:00 PDT 1997')
1950
- timezone = 'America/New_York'
1951
-
1952
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1953
- expect(rrule.between(Time.parse('Mon May 19 06:00:00 PDT 1997'), Time.parse('Mon May 17 06:00:00 PDT 1999'))).to match_array([
1954
- Time.parse('Mon May 19 06:00:00 PDT 1997'),
1955
- Time.parse('Mon May 18 06:00:00 PDT 1998'),
1956
- Time.parse('Mon May 17 06:00:00 PDT 1999')
1957
- ])
1958
- end
1959
-
1960
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO' do
1961
- rrule = 'FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO'
1962
- dtstart = Time.parse('Mon May 12 06:00:00 PDT 1997')
1963
- timezone = 'America/New_York'
1964
-
1965
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1966
- expect(rrule.between(Time.parse('Mon May 12 06:00:00 PDT 1997'), Time.parse('Mon May 17 06:00:00 PDT 1999'))).to match_array([
1967
- Time.parse('Mon May 12 06:00:00 PDT 1997'),
1968
- Time.parse('Mon May 11 06:00:00 PDT 1998'),
1969
- Time.parse('Mon May 17 06:00:00 PDT 1999')
1970
- ])
1971
- end
1972
-
1973
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYMONTH=3;BYDAY=TH' do
1974
- rrule = 'FREQ=YEARLY;BYMONTH=3;BYDAY=TH'
1975
- dtstart = Time.parse('Thu Mar 13 06:00:00 PST 1997')
1976
- timezone = 'America/New_York'
1977
-
1978
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
1979
- expect(rrule.between(Time.parse('Thu Mar 13 06:00:00 PST 1997'), Time.parse('Thu Mar 25 06:00:00 PST 1999'))).to match_array([
1980
- Time.parse('Thu Mar 13 06:00:00 PST 1997'),
1981
- Time.parse('Thu Mar 20 06:00:00 PST 1997'),
1982
- Time.parse('Thu Mar 27 06:00:00 PST 1997'),
1983
- Time.parse('Thu Mar 5 06:00:00 PST 1998'),
1984
- Time.parse('Thu Mar 12 06:00:00 PST 1998'),
1985
- Time.parse('Thu Mar 19 06:00:00 PST 1998'),
1986
- Time.parse('Thu Mar 26 06:00:00 PST 1998'),
1987
- Time.parse('Thu Mar 4 06:00:00 PST 1999'),
1988
- Time.parse('Thu Mar 11 06:00:00 PST 1999'),
1989
- Time.parse('Thu Mar 18 06:00:00 PST 1999'),
1990
- Time.parse('Thu Mar 25 06:00:00 PST 1999')
1991
- ])
1992
- end
1993
-
1994
- it 'returns the correct result with an rrule of FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8' do
1995
- rrule = 'FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8'
1996
- dtstart = Time.parse('Thu Jun 5 06:00:00 PDT 1997')
1997
- timezone = 'America/New_York'
1998
-
1999
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2000
- expect(rrule.between(Time.parse('Thu Jun 5 06:00:00 PDT 1997'), Time.parse('Thu Aug 26 06:00:00 PDT 1999'))).to match_array([
2001
- Time.parse('Thu Jun 5 06:00:00 PDT 1997'),
2002
- Time.parse('Thu Jun 12 06:00:00 PDT 1997'),
2003
- Time.parse('Thu Jun 19 06:00:00 PDT 1997'),
2004
- Time.parse('Thu Jun 26 06:00:00 PDT 1997'),
2005
- Time.parse('Thu Jul 3 06:00:00 PDT 1997'),
2006
- Time.parse('Thu Jul 10 06:00:00 PDT 1997'),
2007
- Time.parse('Thu Jul 17 06:00:00 PDT 1997'),
2008
- Time.parse('Thu Jul 24 06:00:00 PDT 1997'),
2009
- Time.parse('Thu Jul 31 06:00:00 PDT 1997'),
2010
- Time.parse('Thu Aug 7 06:00:00 PDT 1997'),
2011
- Time.parse('Thu Aug 14 06:00:00 PDT 1997'),
2012
- Time.parse('Thu Aug 21 06:00:00 PDT 1997'),
2013
- Time.parse('Thu Aug 28 06:00:00 PDT 1997'),
2014
- Time.parse('Thu Jun 4 06:00:00 PDT 1998'),
2015
- Time.parse('Thu Jun 11 06:00:00 PDT 1998'),
2016
- Time.parse('Thu Jun 18 06:00:00 PDT 1998'),
2017
- Time.parse('Thu Jun 25 06:00:00 PDT 1998'),
2018
- Time.parse('Thu Jul 2 06:00:00 PDT 1998'),
2019
- Time.parse('Thu Jul 9 06:00:00 PDT 1998'),
2020
- Time.parse('Thu Jul 16 06:00:00 PDT 1998'),
2021
- Time.parse('Thu Jul 23 06:00:00 PDT 1998'),
2022
- Time.parse('Thu Jul 30 06:00:00 PDT 1998'),
2023
- Time.parse('Thu Aug 6 06:00:00 PDT 1998'),
2024
- Time.parse('Thu Aug 13 06:00:00 PDT 1998'),
2025
- Time.parse('Thu Aug 20 06:00:00 PDT 1998'),
2026
- Time.parse('Thu Aug 27 06:00:00 PDT 1998'),
2027
- Time.parse('Thu Jun 3 06:00:00 PDT 1999'),
2028
- Time.parse('Thu Jun 10 06:00:00 PDT 1999'),
2029
- Time.parse('Thu Jun 17 06:00:00 PDT 1999'),
2030
- Time.parse('Thu Jun 24 06:00:00 PDT 1999'),
2031
- Time.parse('Thu Jul 1 06:00:00 PDT 1999'),
2032
- Time.parse('Thu Jul 8 06:00:00 PDT 1999'),
2033
- Time.parse('Thu Jul 15 06:00:00 PDT 1999'),
2034
- Time.parse('Thu Jul 22 06:00:00 PDT 1999'),
2035
- Time.parse('Thu Jul 29 06:00:00 PDT 1999'),
2036
- Time.parse('Thu Aug 5 06:00:00 PDT 1999'),
2037
- Time.parse('Thu Aug 12 06:00:00 PDT 1999'),
2038
- Time.parse('Thu Aug 19 06:00:00 PDT 1999'),
2039
- Time.parse('Thu Aug 26 06:00:00 PDT 1999')
2040
- ])
2041
- end
2042
-
2043
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13' do
2044
- rrule = 'FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13'
2045
- dtstart = Time.parse('Sat Sep 13 06:00:00 PDT 1997')
2046
- timezone = 'America/New_York'
2047
-
2048
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2049
- expect(rrule.between(Time.parse('Sat Sep 13 06:00:00 PDT 1997'), Time.parse('Sat Jun 13 06:00:00 PDT 1998'))).to match_array([
2050
- Time.parse('Sat Sep 13 06:00:00 PDT 1997'),
2051
- Time.parse('Sat Oct 11 06:00:00 PDT 1997'),
2052
- Time.parse('Sat Nov 8 06:00:00 PST 1997'),
2053
- Time.parse('Sat Dec 13 06:00:00 PST 1997'),
2054
- Time.parse('Sat Jan 10 06:00:00 PST 1998'),
2055
- Time.parse('Sat Feb 7 06:00:00 PST 1998'),
2056
- Time.parse('Sat Mar 7 06:00:00 PST 1998'),
2057
- Time.parse('Sat Apr 11 06:00:00 PDT 1998'),
2058
- Time.parse('Sat May 9 06:00:00 PDT 1998'),
2059
- Time.parse('Sat Jun 13 06:00:00 PDT 1998')
2060
- ])
2061
- end
2062
-
2063
- it 'returns the correct result with an rrule of FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8' do
2064
- rrule = 'FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8'
2065
- dtstart = Time.parse('Tue Nov 5 06:00:00 PST 1996')
2066
- timezone = 'America/New_York'
2067
-
2068
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2069
- expect(rrule.between(Time.parse('Tue Nov 5 06:00:00 PST 1996'), Time.parse('Tue Nov 2 06:00:00 PST 2004'))).to match_array([
2070
- Time.parse('Tue Nov 5 06:00:00 PST 1996'),
2071
- Time.parse('Tue Nov 7 06:00:00 PST 2000'),
2072
- Time.parse('Tue Nov 2 06:00:00 PST 2004')
2073
- ])
2074
- end
2075
-
2076
- it 'returns the correct result with an rrule of FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2' do
2077
- rrule = 'FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2'
2078
- dtstart = Time.parse('Mon Sep 29 06:00:00 PDT 1997')
2079
- timezone = 'America/New_York'
2080
-
2081
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2082
- expect(rrule.between(Time.parse('Mon Sep 29 06:00:00 PDT 1997'), Time.parse('Mon Mar 30 06:00:00 PST 1998'))).to match_array([
2083
- Time.parse('Mon Sep 29 06:00:00 PDT 1997'),
2084
- Time.parse('Thu Oct 30 06:00:00 PST 1997'),
2085
- Time.parse('Thu Nov 27 06:00:00 PST 1997'),
2086
- Time.parse('Tue Dec 30 06:00:00 PST 1997'),
2087
- Time.parse('Thu Jan 29 06:00:00 PST 1998'),
2088
- Time.parse('Thu Feb 26 06:00:00 PST 1998'),
2089
- Time.parse('Mon Mar 30 06:00:00 PST 1998')
2090
- ])
2091
- end
2092
-
2093
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=7 when the range extends beyond the end of the recurrence (run out of COUNT before the range ends)' do
2094
- rrule ='FREQ=DAILY;COUNT=7'
2095
- dtstart = Time.parse('Thu Feb 6 16:00:00 PST 2014')
2096
- timezone = 'America/Los_Angeles'
2097
-
2098
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2099
- expect(rrule.between(Time.parse('Sun Feb 9 16:00:00 PST 2014'), Time.parse('Wed Feb 19 16:00:00 PST 2014'))).to match_array([
2100
- Time.parse('Sun Feb 9 16:00:00 PST 2014'),
2101
- Time.parse('Mon Feb 10 16:00:00 PST 2014'),
2102
- Time.parse('Tue Feb 11 16:00:00 PST 2014'),
2103
- Time.parse('Wed Feb 12 16:00:00 PST 2014')
2104
- ])
2105
- end
2106
-
2107
- it 'returns the correct result with an rrule of FREQ=DAILY;COUNT=10 and an EXDATE' do
2108
- rrule = 'FREQ=DAILY;COUNT=10'
2109
- dtstart = Time.parse('Tue Sep 2 06:00:00 PST 1997')
2110
- timezone = 'America/New_York'
2111
-
2112
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone, exdate: [Time.parse('Fri Sep 5 06:00:00 PST 1997'), Time.parse('Mon Sep 8 06:00:00 PST 1997')])
2113
- expect(rrule.all).to match_array([
2114
- Time.parse('Tue Sep 2 06:00:00 PST 1997'),
2115
- Time.parse('Wed Sep 3 06:00:00 PST 1997'),
2116
- Time.parse('Thu Sep 4 06:00:00 PST 1997'),
2117
- Time.parse('Sat Sep 6 06:00:00 PST 1997'),
2118
- Time.parse('Sun Sep 7 06:00:00 PST 1997'),
2119
- Time.parse('Tue Sep 9 06:00:00 PST 1997'),
2120
- Time.parse('Wed Sep 10 06:00:00 PST 1997'),
2121
- Time.parse('Thu Sep 11 06:00:00 PST 1997')
2122
- ])
2123
- end
2124
-
2125
- it 'returns the correct result with an rrule of FREQ=WEEKLY;INTERVAL=4;BYDAY=TH' do
2126
- rrule = 'FREQ=WEEKLY;INTERVAL=4;BYDAY=TH'
2127
- timezone = 'America/Los_Angeles'
2128
- dtstart = Time.parse('Thu Jan 28 17:00:00 PST 2016').in_time_zone(timezone)
2129
-
2130
- rrule = RRule.parse(rrule, dtstart: dtstart, tzid: timezone)
2131
- expect(rrule.between(
2132
- Time.parse('Tue May 24 14:34:59 PDT 2016'),
2133
- Time.parse('Sun Jul 24 14:35:09 PDT 2016')
2134
- )).to match_array([
2135
- Time.parse('Thu Jun 16 17:00:00 PDT 2016'),
2136
- Time.parse('Thu Jul 14 17:00:00 PDT 2016')
2137
- ])
2138
- end
2139
-
2140
- it 'returns the correct result with a date start right on the year border' do
2141
- rrule = 'FREQ=DAILY'
2142
- timezone = 'America/Los_Angeles'
2143
- dtstart = Time.parse('Thu Dec 31 16:00:00 PST 2015')
2144
-
2145
- rule = RRule.parse(rrule, dtstart: dtstart, tzid: timezone)
2146
- expect(rule.between(dtstart - 1.month, dtstart + 1.month).first).to eql(dtstart)
2147
- end
2148
-
2149
- it 'returns the correct result when BYSETPOS specifies a position that does not exist' do
2150
- rrule = 'FREQ=MONTHLY;BYDAY=WE;BYSETPOS=5'
2151
- timezone = 'America/Chicago'
2152
- dtstart = Time.parse('Wed Jan 30 09:00:00 PST 2013')
2153
-
2154
- rule = RRule.parse(rrule, dtstart: dtstart, tzid: timezone)
2155
- start_time = Time.parse('Sun Jul 31 22:00:00 PDT 2016')
2156
- expected_instance = Time.parse('Wed Aug 31 09:00:00 PDT 2016')
2157
- end_time = Time.parse('Wed Aug 31 21:59:59 PDT 2016')
2158
- expect(rule.between(start_time, end_time)).to eql([expected_instance])
2159
- end
2160
-
2161
-
2162
- describe 'iterating with a floor_date' do
2163
- describe 'No COUNT or INTERVAL > 1' do
2164
- it 'still limits to the given range' do
2165
- rrule = 'FREQ=DAILY'
2166
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2167
- timezone = 'America/New_York'
2168
-
2169
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2170
-
2171
- start_time = Time.parse('Mon Sep 3 06:00:00 PDT 2018')
2172
- end_time = Time.parse('Thu Sep 10 06:00:00 PDT 2018')
2173
-
2174
- expect(rrule.between(start_time, end_time).take(3)).to match_array([
2175
- Time.parse('Tue Sep 3 06:00:00 PDT 2018'),
2176
- Time.parse('Wed Sep 4 06:00:00 PDT 2018'),
2177
- Time.parse('Thu Sep 5 06:00:00 PDT 2018')
2178
- ])
2179
- end
2180
- end
2181
-
2182
- describe 'COUNT present' do
2183
- it 'still limits to the given range' do
2184
- rrule = 'FREQ=DAILY;COUNT=10'
2185
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2186
- timezone = 'America/New_York'
2187
-
2188
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2189
-
2190
- start_time = Time.parse('Wed Sep 3 06:00:00 PDT 1997')
2191
- end_time = Time.parse('Thu Sep 10 06:00:00 PDT 2018')
2192
-
2193
- expect(rrule.between(start_time, end_time).take(3)).to match_array([
2194
- Time.parse('Tue Sep 3 06:00:00 PDT 1997'),
2195
- Time.parse('Wed Sep 4 06:00:00 PDT 1997'),
2196
- Time.parse('Thu Sep 5 06:00:00 PDT 1997'),
2197
- ])
2198
- end
2199
- end
2200
-
2201
- describe 'INTERVAL present' do
2202
- it 'still limits to the given range' do
2203
- rrule = 'FREQ=DAILY;INTERVAL=10'
2204
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2205
- timezone = 'America/New_York'
2206
-
2207
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2208
-
2209
- start_time = Time.parse('Wed Sep 3 06:00:00 PDT 1997')
2210
- end_time = Time.parse('Thu Sep 30 06:00:00 PDT 2018')
2211
-
2212
- expect(rrule.between(start_time, end_time).take(3)).to match_array([
2213
- Time.parse('Tue Sep 12 06:00:00 PDT 1997'),
2214
- Time.parse('Fri Sep 22 06:00:00 PDT 1997'),
2215
- Time.parse('Mon Oct 02 06:00:00 PDT 1997'),
2216
- ])
2217
- end
2218
- end
2219
-
2220
- describe 'INTERVAL AND COUNT present' do
2221
- it 'still limits to the given range' do
2222
- rrule = 'FREQ=DAILY;INTERVAL=10;COUNT=5'
2223
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2224
- timezone = 'America/New_York'
2225
-
2226
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2227
-
2228
- start_time = Time.parse('Wed Sep 3 06:00:00 PDT 1997')
2229
- end_time = Time.parse('Thu Sep 30 06:00:00 PDT 2018')
2230
-
2231
- expect(rrule.between(start_time, end_time).take(3)).to match_array([
2232
- Time.parse('Tue Sep 12 06:00:00 PDT 1997'),
2233
- Time.parse('Fri Sep 22 06:00:00 PDT 1997'),
2234
- Time.parse('Mon Oct 02 06:00:00 PDT 1997'),
2235
- ])
2236
- end
2237
- end
2238
- end
2239
- end
2240
-
2241
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYHOUR=2' do
2242
- rrule = 'FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYHOUR=2'
2243
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
2244
- timezone = 'America/Los_Angeles'
2245
-
2246
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2247
-
2248
- expect(rrule.all).to match_array([
2249
- Time.parse('Tue Jan 6 02:00:00 PST 1998'),
2250
- Time.parse('Tue Jan 13 02:00:00 PST 1998'),
2251
- Time.parse('Tue Jan 20 02:00:00 PST 1998'),
2252
- Time.parse('Tue Jan 27 02:00:00 PST 1998')
2253
- ])
2254
- end
2255
-
2256
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYHOUR=2;BYMINUTE=44' do
2257
- rrule = 'FREQ=WEEKLY;BYMONTH=1,3;COUNT=4;BYHOUR=2;BYMINUTE=44'
2258
- dtstart = Time.parse('Tue Sep 2 09:00:00 PDT 1997')
2259
- timezone = 'America/Los_Angeles'
2260
-
2261
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2262
- expect(rrule.all).to match_array([
2263
- Time.parse('Tue Jan 6 02:44:00 PST 1998'),
2264
- Time.parse('Tue Jan 13 02:44:00 PST 1998'),
2265
- Time.parse('Tue Jan 20 02:44:00 PST 1998'),
2266
- Time.parse('Tue Jan 27 02:44:00 PST 1998')
2267
- ])
2268
- end
2269
-
2270
- it 'returns the correct result with an rrule of FREQ=WEEKLY;BYMONTH=1,3;COUNT=24;BYHOUR=2,4,6;BYMINUTE=33,22' do
2271
- rrule = 'FREQ=WEEKLY;BYMONTH=1,3;COUNT=24;BYHOUR=2,4,6;BYMINUTE=33,22'
2272
- dtstart = Time.parse('Tue Sep 2 09:23:42 PDT 1997')
2273
- timezone = 'America/Los_Angeles'
2274
-
2275
- rrule = RRule::Rule.new(rrule, dtstart: dtstart, tzid: timezone)
2276
- expect(rrule.all).to match_array([
2277
- Time.parse('Tue Jan 6 02:22:42 PST 1998'),
2278
- Time.parse('Tue Jan 6 02:33:42 PST 1998'),
2279
- Time.parse('Tue Jan 6 04:22:42 PST 1998'),
2280
- Time.parse('Tue Jan 6 04:33:42 PST 1998'),
2281
- Time.parse('Tue Jan 6 06:22:42 PST 1998'),
2282
- Time.parse('Tue Jan 6 06:33:42 PST 1998'),
2283
- Time.parse('Tue Jan 13 02:22:42 PST 1998'),
2284
- Time.parse('Tue Jan 13 02:33:42 PST 1998'),
2285
- Time.parse('Tue Jan 13 04:22:42 PST 1998'),
2286
- Time.parse('Tue Jan 13 04:33:42 PST 1998'),
2287
- Time.parse('Tue Jan 13 06:22:42 PST 1998'),
2288
- Time.parse('Tue Jan 13 06:33:42 PST 1998'),
2289
- Time.parse('Tue Jan 20 02:22:42 PST 1998'),
2290
- Time.parse('Tue Jan 20 02:33:42 PST 1998'),
2291
- Time.parse('Tue Jan 20 04:22:42 PST 1998'),
2292
- Time.parse('Tue Jan 20 04:33:42 PST 1998'),
2293
- Time.parse('Tue Jan 20 06:22:42 PST 1998'),
2294
- Time.parse('Tue Jan 20 06:33:42 PST 1998'),
2295
- Time.parse('Tue Jan 27 02:22:42 PST 1998'),
2296
- Time.parse('Tue Jan 27 02:33:42 PST 1998'),
2297
- Time.parse('Tue Jan 27 04:22:42 PST 1998'),
2298
- Time.parse('Tue Jan 27 04:33:42 PST 1998'),
2299
- Time.parse('Tue Jan 27 06:22:42 PST 1998'),
2300
- Time.parse('Tue Jan 27 06:33:42 PST 1998')
2301
- ])
2302
- end
2303
-
2304
- describe 'validation' do
2305
- it 'raises RRule::InvalidRRule if FREQ is not provided' do
2306
- expect { RRule::Rule.new('') }.to raise_error(RRule::InvalidRRule)
2307
- expect { RRule::Rule.new('FREQ=') }.to raise_error(RRule::InvalidRRule)
2308
- expect { RRule::Rule.new('FREQ=FOO') }.to raise_error(RRule::InvalidRRule)
2309
- expect { RRule::Rule.new('COUNT=1') }.to raise_error(RRule::InvalidRRule)
2310
- expect { RRule::Rule.new('FREQ=FOO;COUNT=1') }.to raise_error(RRule::InvalidRRule)
2311
- end
2312
-
2313
- it 'raises RRule::InvalidRRule if INTERVAL is not a positive integer' do
2314
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2315
- timezone = 'America/New_York'
2316
-
2317
- expect { RRule::Rule.new('FREQ=DAILY;INTERVAL=0', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2318
- expect { RRule::Rule.new('FREQ=DAILY;INTERVAL=-1', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2319
- expect { RRule::Rule.new('FREQ=DAILY;INTERVAL=1.1', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2320
- expect { RRule::Rule.new('FREQ=DAILY;INTERVAL=BOOM', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2321
- end
2322
-
2323
- it 'raises RRule::InvalidRRule if COUNT is not an integer' do
2324
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2325
- timezone = 'America/New_York'
2326
-
2327
- expect { RRule::Rule.new('FREQ=DAILY;COUNT=BOOM', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2328
- expect { RRule::Rule.new('FREQ=DAILY;COUNT=1.5', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2329
- end
2330
-
2331
- it 'raises RRule::InvalidRRule if COUNT is negative' do
2332
- dtstart = Time.parse('Tue Sep 2 06:00:00 PDT 1997')
2333
- timezone = 'America/New_York'
2334
-
2335
- expect { RRule::Rule.new('FREQ=DAILY;COUNT=-1', dtstart: dtstart, tzid: timezone) }.to raise_error(RRule::InvalidRRule)
2336
- end
2337
- end
2338
- end