rrule 0.3.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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