7
7
SumValue ,
8
8
} from '../src/algebraic_value' ;
9
9
import BinaryReader from '../src/binary_reader' ;
10
+ import BinaryWriter from '../src/binary_writer' ;
10
11
11
12
describe ( 'AlgebraicValue' , ( ) => {
12
13
test ( 'when created with a ProductValue it assigns the product property' , ( ) => {
@@ -27,6 +28,52 @@ describe('AlgebraicValue', () => {
27
28
expect ( av . asString ( ) ) . toBe ( 'foo' ) ;
28
29
} ) ;
29
30
31
+ test ( 'options handle falsy strings' , ( ) => {
32
+ let stringOptionType = AlgebraicType . createOptionType (
33
+ AlgebraicType . createStringType ( )
34
+ ) ;
35
+ let writer = new BinaryWriter ( 1024 ) ;
36
+ stringOptionType . serialize ( writer , '' ) ;
37
+ let parsed = stringOptionType . deserialize (
38
+ new BinaryReader ( writer . getBuffer ( ) )
39
+ ) ;
40
+ // Make sure we don't turn this into undefined.
41
+ expect ( parsed ) . toEqual ( '' ) ;
42
+
43
+ writer = new BinaryWriter ( 1024 ) ;
44
+ stringOptionType . serialize ( writer , null ) ;
45
+ parsed = stringOptionType . deserialize ( new BinaryReader ( writer . getBuffer ( ) ) ) ;
46
+ expect ( parsed ) . toEqual ( undefined ) ;
47
+
48
+ writer = new BinaryWriter ( 1024 ) ;
49
+ stringOptionType . serialize ( writer , undefined ) ;
50
+ parsed = stringOptionType . deserialize ( new BinaryReader ( writer . getBuffer ( ) ) ) ;
51
+ expect ( parsed ) . toEqual ( undefined ) ;
52
+ } ) ;
53
+
54
+ test ( 'options handle falsy numbers' , ( ) => {
55
+ let stringOptionType = AlgebraicType . createOptionType (
56
+ AlgebraicType . createU32Type ( )
57
+ ) ;
58
+ let writer = new BinaryWriter ( 1024 ) ;
59
+ stringOptionType . serialize ( writer , 0 ) ;
60
+ let parsed = stringOptionType . deserialize (
61
+ new BinaryReader ( writer . getBuffer ( ) )
62
+ ) ;
63
+ // Make sure we don't turn this into undefined.
64
+ expect ( parsed ) . toEqual ( 0 ) ;
65
+
66
+ writer = new BinaryWriter ( 1024 ) ;
67
+ stringOptionType . serialize ( writer , null ) ;
68
+ parsed = stringOptionType . deserialize ( new BinaryReader ( writer . getBuffer ( ) ) ) ;
69
+ expect ( parsed ) . toEqual ( undefined ) ;
70
+
71
+ writer = new BinaryWriter ( 1024 ) ;
72
+ stringOptionType . serialize ( writer , undefined ) ;
73
+ parsed = stringOptionType . deserialize ( new BinaryReader ( writer . getBuffer ( ) ) ) ;
74
+ expect ( parsed ) . toEqual ( undefined ) ;
75
+ } ) ;
76
+
30
77
test ( 'when created with a AlgebraicValue(AlgebraicValue[]) it can be requested as an array' , ( ) => {
31
78
let array : AlgebraicValue [ ] = [ new AlgebraicValue ( 1 ) ] ;
32
79
let av = new AlgebraicValue ( array ) ;
0 commit comments