X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/8cde629906fd8d8e571fd519b3ca5ab3496ebbc1..1f8c95ba28a59bf8459a15c8b2d52234e577e191:/spec/timetable_spec.lua?ds=inline diff --git a/spec/timetable_spec.lua b/spec/timetable_spec.lua index 815c6d3..0ff42b1 100644 --- a/spec/timetable_spec.lua +++ b/spec/timetable_spec.lua @@ -9,6 +9,19 @@ describe ( "Timetable library" , function ( ) }) end + it ( "#is_leap is correct" , function ( ) + assert.same ( false , timetable.is_leap ( 1 ) ) + assert.same ( false , timetable.is_leap ( 3 ) ) + assert.same ( true , timetable.is_leap ( 4 ) ) + assert.same ( true , timetable.is_leap ( 2000 ) ) + assert.same ( true , timetable.is_leap ( 2004 ) ) + assert.same ( true , timetable.is_leap ( 2012 ) ) + assert.same ( false , timetable.is_leap ( 2013 ) ) + assert.same ( false , timetable.is_leap ( 2014 ) ) + assert.same ( false , timetable.is_leap ( 2100 ) ) + assert.same ( true , timetable.is_leap ( 2400 ) ) + end ) + it ( "#normalise gets #wday (day of week) correct" , function ( ) local function assert_same_wday ( year , month , day ) @@ -44,7 +57,19 @@ describe ( "Timetable library" , function ( ) end end ) - it ( "#normalise handles out of range #month" , function ( ) + it ( "#normalise handles out of range days in a #month" , function ( ) assert.same ( { timetable.normalise(2013,0,1,0,0,0) } , { 2012,12,1,0,0,0 } ) + assert.same ( { timetable.normalise(2013,42,1,0,0,0) } , { 2016,6,1,0,0,0 } ) + + -- Correct behaviour around leap days + assert.same ( { timetable.normalise(2012,2,52,0,0,0) } , { 2012,3,23,0,0,0 } ) + assert.same ( { timetable.normalise(2013,2,52,0,0,0) } , { 2013,3,24,0,0,0 } ) + + assert.same ( { timetable.normalise(2012,3,-2,0,0,0) } , { 2012,2,26,0,0,0 } ) + assert.same ( { timetable.normalise(2013,3,-2,0,0,0) } , { 2013,2,27,0,0,0 } ) + + -- Also when more fields are out of range + assert.same ( { timetable.normalise(2013,42,52,0,0,0) } , { 2016,7,22,0,0,0 } ) + assert.same ( { timetable.normalise(2013,42,52,50,0,0) } , { 2016,7,24,2,0,0 } ) end ) end )