@@ -42,6 +42,44 @@ describe("Duration", () => {
42
42
expect ( Duration . decode ( [ - 500 , 123456789 ] ) ) . toEqual ( Duration . zero )
43
43
44
44
expect ( ( ) => Duration . decode ( "1.5 secs" as any ) ) . toThrowError ( new Error ( "Invalid duration input" ) )
45
+ expect ( ( ) => Duration . decode ( true as any ) ) . toThrowError ( new Error ( "Invalid duration input" ) )
46
+ expect ( ( ) => Duration . decode ( { } as any ) ) . toThrowError ( new Error ( "Invalid duration input" ) )
47
+ } )
48
+
49
+ it ( "decodeUnknown" , ( ) => {
50
+ const millis100 = Duration . millis ( 100 )
51
+ expect ( Duration . decodeUnknown ( millis100 ) ) . toEqual ( Option . some ( millis100 ) )
52
+
53
+ expect ( Duration . decodeUnknown ( 100 ) ) . toEqual ( Option . some ( millis100 ) )
54
+
55
+ expect ( Duration . decodeUnknown ( 10n ) ) . toEqual ( Option . some ( Duration . nanos ( 10n ) ) )
56
+
57
+ expect ( Duration . decodeUnknown ( "1 nano" ) ) . toEqual ( Option . some ( Duration . nanos ( 1n ) ) )
58
+ expect ( Duration . decodeUnknown ( "10 nanos" ) ) . toEqual ( Option . some ( Duration . nanos ( 10n ) ) )
59
+ expect ( Duration . decodeUnknown ( "1 micro" ) ) . toEqual ( Option . some ( Duration . micros ( 1n ) ) )
60
+ expect ( Duration . decodeUnknown ( "10 micros" ) ) . toEqual ( Option . some ( Duration . micros ( 10n ) ) )
61
+ expect ( Duration . decodeUnknown ( "1 milli" ) ) . toEqual ( Option . some ( Duration . millis ( 1 ) ) )
62
+ expect ( Duration . decodeUnknown ( "10 millis" ) ) . toEqual ( Option . some ( Duration . millis ( 10 ) ) )
63
+ expect ( Duration . decodeUnknown ( "1 second" ) ) . toEqual ( Option . some ( Duration . seconds ( 1 ) ) )
64
+ expect ( Duration . decodeUnknown ( "10 seconds" ) ) . toEqual ( Option . some ( Duration . seconds ( 10 ) ) )
65
+ expect ( Duration . decodeUnknown ( "1 minute" ) ) . toEqual ( Option . some ( Duration . minutes ( 1 ) ) )
66
+ expect ( Duration . decodeUnknown ( "10 minutes" ) ) . toEqual ( Option . some ( Duration . minutes ( 10 ) ) )
67
+ expect ( Duration . decodeUnknown ( "1 hour" ) ) . toEqual ( Option . some ( Duration . hours ( 1 ) ) )
68
+ expect ( Duration . decodeUnknown ( "10 hours" ) ) . toEqual ( Option . some ( Duration . hours ( 10 ) ) )
69
+ expect ( Duration . decodeUnknown ( "1 day" ) ) . toEqual ( Option . some ( Duration . days ( 1 ) ) )
70
+ expect ( Duration . decodeUnknown ( "10 days" ) ) . toEqual ( Option . some ( Duration . days ( 10 ) ) )
71
+ expect ( Duration . decodeUnknown ( "1 week" ) ) . toEqual ( Option . some ( Duration . weeks ( 1 ) ) )
72
+ expect ( Duration . decodeUnknown ( "10 weeks" ) ) . toEqual ( Option . some ( Duration . weeks ( 10 ) ) )
73
+
74
+ expect ( Duration . decodeUnknown ( "1.5 seconds" ) ) . toEqual ( Option . some ( Duration . seconds ( 1.5 ) ) )
75
+ expect ( Duration . decodeUnknown ( "-1.5 seconds" ) ) . toEqual ( Option . some ( Duration . zero ) )
76
+
77
+ expect ( Duration . decodeUnknown ( [ 500 , 123456789 ] ) ) . toEqual ( Option . some ( Duration . nanos ( 500123456789n ) ) )
78
+ expect ( Duration . decodeUnknown ( [ - 500 , 123456789 ] ) ) . toEqual ( Option . some ( Duration . zero ) )
79
+
80
+ expect ( Duration . decodeUnknown ( "1.5 secs" ) ) . toEqual ( Option . none ( ) )
81
+ expect ( Duration . decodeUnknown ( true ) ) . toEqual ( Option . none ( ) )
82
+ expect ( Duration . decodeUnknown ( { } ) ) . toEqual ( Option . none ( ) )
45
83
} )
46
84
47
85
it ( "Order" , ( ) => {
0 commit comments