rrule 0.3.1 → 0.4.3

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