1
+ /**
2
+ * Copyright (c) Hathor Labs and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import Serializer from '../../src/nano_contracts/serializer' ;
9
+ import Deserializer from '../../src/nano_contracts/deserializer' ;
10
+
11
+
12
+ test ( 'Bool' , ( ) => {
13
+ const serializer = new Serializer ( ) ;
14
+ const deserializer = new Deserializer ( ) ;
15
+
16
+ const valueFalse = false ;
17
+ const serializedFalse = serializer . serializeFromType ( valueFalse , 'bool' ) ;
18
+ const deserializedFalse = deserializer . deserializeFromType ( serializedFalse , 'bool' ) ;
19
+ expect ( deserializedFalse ) . toBe ( valueFalse ) ;
20
+
21
+ const valueTrue = true ;
22
+ const serializedTrue = serializer . serializeFromType ( valueTrue , 'bool' ) ;
23
+ const deserializedTrue = deserializer . deserializeFromType ( serializedTrue , 'bool' ) ;
24
+ expect ( deserializedTrue ) . toBe ( valueTrue ) ;
25
+ } )
26
+
27
+ test ( 'String' , ( ) => {
28
+ const serializer = new Serializer ( ) ;
29
+ const deserializer = new Deserializer ( ) ;
30
+
31
+ const value = 'test' ;
32
+ const serialized = serializer . serializeFromType ( value , 'str' ) ;
33
+ const deserialized = deserializer . deserializeFromType ( serialized , 'str' ) ;
34
+
35
+ expect ( value ) . toBe ( deserialized ) ;
36
+ } )
37
+
38
+ test ( 'Int' , ( ) => {
39
+ const serializer = new Serializer ( ) ;
40
+ const deserializer = new Deserializer ( ) ;
41
+
42
+ const value = 300 ;
43
+ const serialized = serializer . serializeFromType ( value , 'int' ) ;
44
+ const deserialized = deserializer . deserializeFromType ( serialized , 'int' ) ;
45
+
46
+ expect ( value ) . toBe ( deserialized ) ;
47
+ } )
48
+
49
+ test ( 'Bytes' , ( ) => {
50
+ const serializer = new Serializer ( ) ;
51
+ const deserializer = new Deserializer ( ) ;
52
+
53
+ const value = Buffer . from ( [ 0x74 , 0x65 , 0x73 , 0x74 ] ) ;
54
+ const serialized = serializer . serializeFromType ( value , 'bytes' ) ;
55
+ const deserialized = deserializer . deserializeFromType ( serialized , 'bytes' ) ;
56
+
57
+ expect ( value . equals ( deserialized ) ) . toBe ( true ) ;
58
+ } )
59
+
60
+ test ( 'Float' , ( ) => {
61
+ const serializer = new Serializer ( ) ;
62
+ const deserializer = new Deserializer ( ) ;
63
+
64
+ const value = 10.32134 ;
65
+ const serialized = serializer . serializeFromType ( value , 'float' ) ;
66
+ const deserialized = deserializer . deserializeFromType ( serialized , 'float' ) ;
67
+
68
+ expect ( value ) . toBe ( deserialized ) ;
69
+ } )
70
+
71
+ test ( 'Optional' , ( ) => {
72
+ const serializer = new Serializer ( ) ;
73
+ const deserializer = new Deserializer ( ) ;
74
+
75
+ const valueEmptyInt = null ;
76
+ const serializedEmptyInt = serializer . serializeFromType ( valueEmptyInt , 'int?' ) ;
77
+ const deserializedEmptyInt = deserializer . deserializeFromType ( serializedEmptyInt , 'int?' ) ;
78
+
79
+ expect ( deserializedEmptyInt ) . toBe ( valueEmptyInt ) ;
80
+
81
+ const valueInt = 300 ;
82
+ const serializedInt = serializer . serializeFromType ( valueInt , 'int?' ) ;
83
+ const deserializedInt = deserializer . deserializeFromType ( serializedInt , 'int?' ) ;
84
+
85
+ expect ( deserializedInt ) . toBe ( valueInt ) ;
86
+
87
+ const valueEmptyBool = null ;
88
+ const serializedEmptyBool = serializer . serializeFromType ( valueEmptyBool , 'bool?' ) ;
89
+ const deserializedEmptyBool = deserializer . deserializeFromType ( serializedEmptyBool , 'bool?' ) ;
90
+
91
+ expect ( deserializedEmptyBool ) . toBe ( valueEmptyBool ) ;
92
+
93
+ const valueBool = true ;
94
+ const serializedBool = serializer . serializeFromType ( valueBool , 'bool?' ) ;
95
+ const deserializedBool = deserializer . deserializeFromType ( serializedBool , 'bool?' ) ;
96
+
97
+ expect ( deserializedBool ) . toBe ( valueBool ) ;
98
+
99
+ const valueEmptyStr = null ;
100
+ const serializedEmptyStr = serializer . serializeFromType ( valueEmptyStr , 'str?' ) ;
101
+ const deserializedEmptyStr = deserializer . deserializeFromType ( serializedEmptyStr , 'str?' ) ;
102
+
103
+ expect ( deserializedEmptyStr ) . toBe ( valueEmptyStr ) ;
104
+
105
+ const valueStr = 'test' ;
106
+ const serializedStr = serializer . serializeFromType ( valueStr , 'str?' ) ;
107
+ const deserializedStr = deserializer . deserializeFromType ( serializedStr , 'str?' ) ;
108
+
109
+ expect ( deserializedStr ) . toBe ( valueStr ) ;
110
+
111
+ const valueEmptyBytes = null ;
112
+ const serializedEmptyBytes = serializer . serializeFromType ( valueEmptyBytes , 'bytes?' ) ;
113
+ const deserializedEmptyBytes = deserializer . deserializeFromType ( serializedEmptyBytes , 'bytes?' ) ;
114
+
115
+ expect ( deserializedEmptyBytes ) . toBe ( valueEmptyBytes ) ;
116
+
117
+ const valueBytes = Buffer . from ( [ 0x74 , 0x65 , 0x73 , 0x74 ] ) ;
118
+ const serializedBytes = serializer . serializeFromType ( valueBytes , 'bytes?' ) ;
119
+ const deserializedBytes = deserializer . deserializeFromType ( serializedBytes , 'bytes?' ) ;
120
+
121
+ expect ( deserializedBytes . equals ( valueBytes ) ) . toBe ( true ) ;
122
+
123
+ const valueEmptyFloat = null ;
124
+ const serializedEmptyFloat = serializer . serializeFromType ( valueEmptyFloat , 'float?' ) ;
125
+ const deserializedEmptyFloat = deserializer . deserializeFromType ( serializedEmptyFloat , 'float?' ) ;
126
+
127
+ expect ( deserializedEmptyFloat ) . toBe ( valueEmptyFloat ) ;
128
+
129
+ const valueFloat = 10.32134 ;
130
+ const serializedFloat = serializer . serializeFromType ( valueFloat , 'float?' ) ;
131
+ const deserializedFloat = deserializer . deserializeFromType ( serializedFloat , 'float?' ) ;
132
+
133
+ expect ( deserializedFloat ) . toBe ( valueFloat ) ;
134
+ } )
135
+
136
+ test ( 'Signed' , ( ) => {
137
+ const serializer = new Serializer ( ) ;
138
+ const deserializer = new Deserializer ( ) ;
139
+
140
+ const valueInt = '74657374,300,int' ;
141
+ const serializedInt = serializer . serializeFromType ( valueInt , 'SignedData[int]' ) ;
142
+ const deserializedInt = deserializer . deserializeFromType ( serializedInt , 'SignedData[int]' ) ;
143
+
144
+ expect ( valueInt ) . toBe ( deserializedInt ) ;
145
+
146
+ const valueStr = '74657374,test,str' ;
147
+ const serializedStr = serializer . serializeFromType ( valueStr , 'SignedData[str]' ) ;
148
+ const deserializedStr = deserializer . deserializeFromType ( serializedStr , 'SignedData[str]' ) ;
149
+
150
+ expect ( valueStr ) . toBe ( deserializedStr ) ;
151
+
152
+ const valueBytes = '74657374,74657374,bytes' ;
153
+ const serializedBytes = serializer . serializeFromType ( valueBytes , 'SignedData[bytes]' ) ;
154
+ const deserializedBytes = deserializer . deserializeFromType ( serializedBytes , 'SignedData[bytes]' ) ;
155
+
156
+ expect ( valueBytes ) . toBe ( deserializedBytes ) ;
157
+
158
+ const valueFloat = '74657374,10.32134,float' ;
159
+ const serializedFloat = serializer . serializeFromType ( valueFloat , 'SignedData[float]' ) ;
160
+ const deserializedFloat = deserializer . deserializeFromType ( serializedFloat , 'SignedData[float]' ) ;
161
+
162
+ expect ( valueFloat ) . toBe ( deserializedFloat ) ;
163
+
164
+ const valueBoolFalse = '74657374,false,bool' ;
165
+ const serializedBoolFalse = serializer . serializeFromType ( valueBoolFalse , 'SignedData[bool]' ) ;
166
+ const deserializedBoolFalse = deserializer . deserializeFromType ( serializedBoolFalse , 'SignedData[bool]' ) ;
167
+
168
+ expect ( valueBoolFalse ) . toBe ( deserializedBoolFalse ) ;
169
+
170
+ const valueBoolTrue = '74657374,true,bool' ;
171
+ const serializedBoolTrue = serializer . serializeFromType ( valueBoolTrue , 'SignedData[bool]' ) ;
172
+ const deserializedBoolTrue = deserializer . deserializeFromType ( serializedBoolTrue , 'SignedData[bool]' ) ;
173
+
174
+ expect ( valueBoolTrue ) . toBe ( deserializedBoolTrue ) ;
175
+ } )
0 commit comments