@@ -77,6 +77,10 @@ def parse_date(str)
7777 [ "15-59/15 * * * *" , "2014-02-01 15:45" , "2014-02-01 16:15" , 4 ] ,
7878 [ "15-59/15 * * * *" , "2014-02-01 15:46" , "2014-02-01 16:15" , 3 ] ,
7979 [ "15-59/15 * * * *" , "2014-02-01 15:46" , "2014-02-01 16:15" , 2 ] ,
80+ [ "* * L 2 *" , "2015-02-01 15:36" , "2015-02-28 00:00" , 1 ] ,
81+ [ "* * L 2 *" , "2016-02-01 15:36" , "2016-02-29 00:00" , 1 ] ,
82+ [ "* * 15,L 2 *" , "2015-02-01 15:36" , "2015-02-15 00:00" , 1 ] ,
83+ [ "* * 15,L 2 *" , "2015-02-16 15:36" , "2015-02-28 00:00" , 1 ]
8084 ] . each do |line , now , expected_next , num |
8185 it "returns #{ expected_next } for '#{ line } ' when now is #{ now } " do
8286 parsed_now = parse_date ( now )
@@ -156,6 +160,10 @@ def parse_date(str)
156160 [ "15-59/15 * * * *" , "2014-02-01 15:36" , "2014-02-01 15:30" ] ,
157161 [ "15-59/15 * * * *" , "2014-02-01 15:45" , "2014-02-01 15:30" ] ,
158162 [ "15-59/15 * * * *" , "2014-02-01 15:46" , "2014-02-01 15:45" ] ,
163+ [ "* * L 2 *" , "2014-02-01 15:36" , "2013-02-28 23:59" ] ,
164+ [ "* * L 2 *" , "2017-02-01 15:36" , "2016-02-29 23:59" ] ,
165+ [ "* * 15,L 2 *" , "2015-02-01 15:36" , "2014-02-28 23:59" ] ,
166+ [ "* * 15,L 2 *" , "2015-02-16 15:36" , "2015-02-15 23:59" ]
159167 ] . each do |line , now , expected_next |
160168 it "should return #{ expected_next } for '#{ line } ' when now is #{ now } " do
161169 now = parse_date ( now )
@@ -176,6 +184,19 @@ def parse_date(str)
176184 it 'should raise error when given an invalid cronline' do
177185 expect { CronParser . new ( '* * * *' ) } . to raise_error ( 'not a valid cronline' )
178186 end
187+
188+ it 'should not raise error when L is passed in DOM field' do
189+ expect { CronParser . new ( '* * L * *' ) . next } . not_to raise_error
190+ end
191+
192+ ( 0 ..4 ) . each do |n |
193+ next if n == 2
194+ it "should raise error when L is passed in #{ n } field" do
195+ spec = Array . new ( 5 ) { '*' }
196+ spec [ n ] = 'L'
197+ expect { CronParser . new ( spec . join ( ' ' ) ) . next } . to raise_error ( "'L' specification is supported only for DOM field" )
198+ end
199+ end
179200end
180201
181202RSpec . describe "time source" do
0 commit comments