factor/basis/calendar/parser/parser-tests.factor

189 lines
4.4 KiB
Factor

USING: accessors calendar calendar.format calendar.parser io
io.streams.string kernel math.order tools.test ;
IN: calendar.parser.tests
! attempt-all-quots
{ 2 } [ { [ 2 ] } attempt-all-quots ] unit-test
{ 2 } [ { [ 1 throw ] [ 2 ] } attempt-all-quots ] unit-test
[ { [ 1 throw ] } attempt-all-quots ] [ 1 = ] must-fail-with
: compiled-test-1 ( -- n )
{ [ 1 throw ] [ 2 ] } attempt-all-quots ;
\ compiled-test-1 def>> must-infer
{ 2 } [ compiled-test-1 ] unit-test
! cookie-string>timestamp
{
T{ timestamp
{ year 2008 }
{ month 10 }
{ day 2 }
{ hour 23 }
{ minute 59 }
{ second 59 }
{ gmt-offset T{ duration f 0 0 0 0 0 0 } }
}
} [ "Thursday, 02-Oct-2008 23:59:59 GMT" cookie-string>timestamp ] unit-test
{ "Sun, 4 May 2008 07:00:00" } [
"Sun May 04 07:00:00 2008 GMT" cookie-string>timestamp
timestamp>string
] unit-test
{ "20080504070000" } [
"Sun May 04 07:00:00 2008 GMT" cookie-string>timestamp
timestamp>mdtm
] unit-test
{ t } [
now dup timestamp>cookie-string cookie-string>timestamp
time- 1 seconds before?
] unit-test
! cookie-string>timestamp-1
{ "20160203102022" } [
"Friday, 03-Feb-2016 10:20:22 GMT" cookie-string>timestamp-1
timestamp>mdtm
] unit-test
[ "Friday, 03-Feb-2016 24:20:22 GMT" cookie-string>timestamp-1 ]
[ not-in-interval? ] must-fail-with
[ "Friday, 33-Feb-2016 12:20:22 GMT" cookie-string>timestamp-1 ]
[ not-in-interval? ] must-fail-with
! cookie-string>timestamp-2
{ "19980903102022" } [
"Friday Sep 3 10:20:22 1998 GMT" cookie-string>timestamp-2 timestamp>mdtm
] unit-test
[ "Friday Sep 3 10:60:22 1998 GMT" cookie-string>timestamp-2 ]
[ not-in-interval? ] must-fail-with
! hhmm>duration
{
T{ duration { hour 10 } { minute 20 } }
} [
"1020" hhmm>duration
] unit-test
! parse-rfc822-gmt-offset
{ T{ duration f 0 0 0 0 0 0 } } [
"GMT" parse-rfc822-gmt-offset
] unit-test
{ T{ duration f 0 0 0 -5 0 0 } } [
"-0500" parse-rfc822-gmt-offset
] unit-test
{ T{ duration f 0 0 0 -1 0 0 } } [
"A" parse-rfc822-gmt-offset
] unit-test
{ T{ duration f 0 0 0 12 0 0 } } [
"Y" parse-rfc822-gmt-offset
] unit-test
{ T{ duration f 0 0 0 -8 0 0 } } [
"PST" parse-rfc822-gmt-offset
] unit-test
! read-rfc3339-gmt-offset
{ 1+1/2 } [
"+01:30" [ read1 read-rfc3339-gmt-offset ] with-string-reader duration>hours
] unit-test
{ -1-1/2 } [
"-01:30" [ read1 read-rfc3339-gmt-offset ] with-string-reader duration>hours
] unit-test
{ 0 } [
"Z" [ read1 read-rfc3339-gmt-offset ] with-string-reader duration>hours
] unit-test
{ 1 } [
"+01" [ read1 read-rfc3339-gmt-offset ] with-string-reader duration>hours
] unit-test
{ -1 } [
"-01" [ read1 read-rfc3339-gmt-offset ] with-string-reader duration>hours
] unit-test
! rfc3339>timestamp
{
T{ timestamp
{ year 2013 }
{ month 4 }
{ day 23 }
{ hour 13 }
{ minute 50 }
{ second 24 }
}
} [ "2013-04-23T13:50:24" rfc3339>timestamp ] unit-test
{
T{ timestamp
{ year 2001 }
{ month 12 }
{ day 15 }
{ hour 02 }
{ minute 59 }
{ second 43+1/10 }
}
} [ "2001-12-15 02:59:43.1Z" rfc3339>timestamp ] unit-test
{
T{ timestamp
{ year 2001 }
{ month 12 }
{ day 15 }
{ hour 02 }
{ minute 59 }
{ second 43+1/10 }
}
} [ "2001-12-15 02:59:43.1Z" rfc3339>timestamp ] unit-test
{
T{ timestamp f
2008
5
26
0
37
42+2469/20000
T{ duration f 0 0 0 -5 0 0 }
}
} [ "2008-05-26T00:37:42.12345-05:00" rfc3339>timestamp ] unit-test
{ 8/1000 -4 } [
"2008-04-19T04:56:00.008-04:00" rfc3339>timestamp
[ second>> ] [ gmt-offset>> hour>> ] bi
] unit-test
{ "2001-12-14T21:59:43.100000-05:00" } [
"2001-12-14T21:59:43.1-05:00" rfc3339>timestamp timestamp>rfc3339
] unit-test
! rfc822>timestamp
{ t } [
now dup timestamp>rfc822 rfc822>timestamp time- 1 seconds before?
] unit-test
{ "Tue, 22 Apr 2008 14:36:12 GMT" } [
"Tue, 22 Apr 2008 14:36:12 GMT" rfc822>timestamp timestamp>rfc822
] unit-test
{ "Tue, 22 Apr 2008 14:36:12 GMT" } [
"Tue, 22 Apr 2008 14:36:12 GMT "
rfc822>timestamp timestamp>rfc822
] unit-test
[ "Tue, 99 Apr 2008 14:36:12 GMT" rfc822>timestamp ]
[ not-in-interval? ] must-fail-with
[ "Wed, 29 Feb 2017 10:20:30 GMT" rfc822>timestamp ]
[ not-in-interval? ] must-fail-with