@@ -13,6 +13,18 @@ module IceCube
1313 Time . new ( 2015 , 9 , 23 , 12 , 0 , 0 )
1414 ] )
1515 end
16+
17+ it 'should work with intervals' do
18+ schedule = IceCube ::Schedule . from_ical "RRULE:FREQ=MONTHLY;COUNT=4;BYDAY=WE;BYSETPOS=4;INTERVAL=2"
19+ schedule . start_time = Time . new ( 2015 , 5 , 28 , 12 , 0 , 0 )
20+ expect ( schedule . occurrences_between ( Time . new ( 2015 , 01 , 01 ) , Time . new ( 2017 , 01 , 01 ) ) ) .
21+ to eq ( [
22+ Time . new ( 2015 , 7 , 22 , 12 , 0 , 0 ) ,
23+ Time . new ( 2015 , 9 , 23 , 12 , 0 , 0 ) ,
24+ Time . new ( 2015 , 11 , 25 , 12 , 0 , 0 ) ,
25+ Time . new ( 2016 , 1 , 27 , 12 , 0 , 0 ) ,
26+ ] )
27+ end
1628 end
1729
1830 describe YearlyRule , 'BYSETPOS' do
@@ -25,5 +37,39 @@ module IceCube
2537 Time . new ( 2016 , 7 , 31 )
2638 ] )
2739 end
40+
41+ it 'should work with intervals' do
42+ schedule = IceCube ::Schedule . from_ical "RRULE:FREQ=YEARLY;BYMONTH=7;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYSETPOS=-1;INTERVAL=2"
43+ schedule . start_time = Time . new ( 1966 , 7 , 5 )
44+ expect ( schedule . occurrences_between ( Time . new ( 2015 , 01 , 01 ) , Time . new ( 2023 , 01 , 01 ) ) ) .
45+ to eq ( [
46+ Time . new ( 2016 , 7 , 31 ) ,
47+ Time . new ( 2018 , 7 , 31 ) ,
48+ Time . new ( 2020 , 7 , 31 ) ,
49+ Time . new ( 2022 , 7 , 31 ) ,
50+ ] )
51+ end
52+
53+ it 'should work with counts' do
54+ schedule = IceCube ::Schedule . from_ical "RRULE:FREQ=YEARLY;BYMONTH=7;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYSETPOS=-1;COUNT=3"
55+ schedule . start_time = Time . new ( 2016 , 1 , 1 )
56+ expect ( schedule . occurrences_between ( Time . new ( 2016 , 01 , 01 ) , Time . new ( 2050 , 01 , 01 ) ) ) .
57+ to eq ( [
58+ Time . new ( 2016 , 7 , 31 ) ,
59+ Time . new ( 2017 , 7 , 31 ) ,
60+ Time . new ( 2018 , 7 , 31 ) ,
61+ ] )
62+ end
63+
64+ it 'should work with counts and intervals' do
65+ schedule = IceCube ::Schedule . from_ical "RRULE:FREQ=YEARLY;BYMONTH=7;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYSETPOS=-1;COUNT=3;INTERVAL=2"
66+ schedule . start_time = Time . new ( 2016 , 1 , 1 )
67+ expect ( schedule . occurrences_between ( Time . new ( 2016 , 01 , 01 ) , Time . new ( 2050 , 01 , 01 ) ) ) .
68+ to eq ( [
69+ Time . new ( 2016 , 7 , 31 ) ,
70+ Time . new ( 2018 , 7 , 31 ) ,
71+ Time . new ( 2020 , 7 , 31 ) ,
72+ ] )
73+ end
2874 end
2975end
0 commit comments