@@ -41,3 +41,32 @@ test('parse booleans from strings', () => {
41
41
expect ( parseValues ( values , FieldType . string ) ) . toStrictEqual ( [ 'false' , 'true' , 'false' ] ) ;
42
42
expect ( parseValues ( values , FieldType . time ) ) . toStrictEqual ( [ NaN , NaN , NaN ] ) ;
43
43
} ) ;
44
+
45
+ test ( 'parse nullable strings' , ( ) => {
46
+ const values = [ 'foo' , 'bar' , null ] ;
47
+
48
+ expect ( ( ) => parseValues ( values , FieldType . boolean ) ) . toThrow ( ) ;
49
+ expect ( parseValues ( values , FieldType . number ) ) . toStrictEqual ( [ NaN , NaN , null ] ) ;
50
+ expect ( parseValues ( values , FieldType . string ) ) . toStrictEqual ( [ 'foo' , 'bar' , null ] ) ;
51
+ expect ( parseValues ( values , FieldType . time ) ) . toStrictEqual ( [ NaN , NaN , null ] ) ;
52
+ } ) ;
53
+
54
+ test ( 'parse nullable numbers' , ( ) => {
55
+ const values = [ 2005 , null , 2006 ] ;
56
+
57
+ expect ( ( ) => parseValues ( values , FieldType . boolean ) ) . toThrow ( ) ;
58
+ expect ( parseValues ( values , FieldType . number ) ) . toStrictEqual ( [ 2005 , null , 2006 ] ) ;
59
+ expect ( parseValues ( values , FieldType . string ) ) . toStrictEqual ( [ '2005' , null , '2006' ] ) ;
60
+
61
+ // Numbers are assumed to be epoch time in seconds.
62
+ expect ( parseValues ( values , FieldType . time ) ) . toStrictEqual ( [ 2005000 , null , 2006000 ] ) ;
63
+ } ) ;
64
+
65
+ test ( 'parse nullable booleans' , ( ) => {
66
+ const values = [ null , true , false ] ;
67
+
68
+ expect ( parseValues ( values , FieldType . boolean ) ) . toStrictEqual ( [ null , true , false ] ) ;
69
+ expect ( parseValues ( values , FieldType . number ) ) . toStrictEqual ( [ null , NaN , NaN ] ) ;
70
+ expect ( parseValues ( values , FieldType . string ) ) . toStrictEqual ( [ null , 'true' , 'false' ] ) ;
71
+ expect ( ( ) => parseValues ( values , FieldType . time ) ) . toThrow ( ) ;
72
+ } ) ;
0 commit comments