@@ -6,226 +6,220 @@ namespace $.$$ {
66 const { L1 , L2 , L4 , L8 , LA } = $mol_vary_len
77 const str = $mol_charset_encode
88
9- function check ( vary : unknown , ideal : readonly number [ ] , Vary = $mol_vary ) {
10- const pack = Vary . pack ( [ vary ] )
11- $mol_assert_equal ( Vary . take ( pack ) , [ vary ] )
9+ function check ( vary : readonly unknown [ ] , ideal : readonly number [ ] , Vary = $mol_vary ) {
10+ const pack = Vary . pack ( vary )
11+ $mol_assert_equal ( Vary . take ( pack ) , vary )
1212 $mol_assert_equal ( pack , new Uint8Array ( ideal ) )
1313 }
1414
1515 $mol_test ( {
1616
1717 "vary pack logical" ( $ ) {
18- check ( null , [ spec | none ] )
19- check ( true , [ $mol_vary_spec . true ] )
20- check ( false , [ $mol_vary_spec . fake ] )
21- check ( undefined , [ spec | both ] )
18+ check ( [ null ] , [ spec | none ] )
19+ check ( [ true ] , [ $mol_vary_spec . true ] )
20+ check ( [ false ] , [ $mol_vary_spec . fake ] )
21+ check ( [ undefined ] , [ spec | both ] )
2222 } ,
2323
2424 "vary pack uint0" ( $ ) {
25- check ( 0 , [ 0 ] )
26- check ( 27 , [ 27 ] )
25+ check ( [ 0 ] , [ 0 ] )
26+ check ( [ 27 ] , [ 27 ] )
2727 } ,
2828
2929 "vary pack uint1" ( $ ) {
30- check ( 28 , [ uint | L1 , 28 ] )
31- check ( 255 , [ uint | L1 , 255 ] )
30+ check ( [ 28 ] , [ uint | L1 , 28 ] )
31+ check ( [ 255 ] , [ uint | L1 , 255 ] )
3232 } ,
3333
3434 "vary pack uint2" ( $ ) {
35- check ( 256 , [ uint | L2 , 0 , 1 ] )
36- check ( 256 ** 2 - 1 , [ uint | L2 , 255 , 255 ] )
35+ check ( [ 256 ] , [ uint | L2 , 0 , 1 ] )
36+ check ( [ 256 ** 2 - 1 ] , [ uint | L2 , 255 , 255 ] )
3737 } ,
3838
3939 "vary pack uint4" ( $ ) {
40- check ( 256 ** 2 , [ uint | L4 , 0 , 0 , 1 , 0 ] )
41- check ( 256 ** 4 - 1 , [ uint | L4 , 255 , 255 , 255 , 255 ] )
40+ check ( [ 256 ** 2 ] , [ uint | L4 , 0 , 0 , 1 , 0 ] )
41+ check ( [ 256 ** 4 - 1 ] , [ uint | L4 , 255 , 255 , 255 , 255 ] )
4242 } ,
4343
4444 "vary pack uint8" ( $ ) {
45- check ( 256 ** 4 , [ uint | L8 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ] )
46- check ( Number . MAX_SAFE_INTEGER , [ uint | L8 , 255 , 255 , 255 , 255 , 255 , 255 , 31 , 0 ] )
47- check ( 256n ** 8n - 1n , [ uint | L8 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] )
48- } ,
49-
50- "vary pack with wrong size" ( $ ) {
51- $mol_assert_equal ( $mol_vary . take ( new Uint8Array ( [ ] ) ) , [ ] )
52- $mol_assert_equal ( $mol_vary . take ( new Uint8Array ( [ uint | 7 ] ) ) , [ 7 ] )
53- $mol_assert_equal ( $mol_vary . take ( new Uint8Array ( [ uint | 7 , uint | 7 ] ) ) , [ 7 , 7 ] )
45+ check ( [ 256 ** 4 ] , [ uint | L8 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 ] )
46+ check ( [ Number . MAX_SAFE_INTEGER ] , [ uint | L8 , 255 , 255 , 255 , 255 , 255 , 255 , 31 , 0 ] )
47+ check ( [ 256n ** 8n - 1n ] , [ uint | L8 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] )
5448 } ,
5549
5650 "vary pack sint0" ( $ ) {
57- check ( - 1 , [ - 1 ] )
58- check ( - 27 , [ - 27 ] )
51+ check ( [ - 1 ] , [ - 1 ] )
52+ check ( [ - 27 ] , [ - 27 ] )
5953 } ,
6054
6155 "vary pack sint1" ( $ ) {
62- check ( - 28 , [ sint | - L1 , - 28 ] )
63- check ( - 256 / 2 , [ sint | - L1 , 128 ] )
56+ check ( [ - 28 , ] , [ sint | - L1 , - 28 ] )
57+ check ( [ - 256 / 2 ] , [ sint | - L1 , 128 ] )
6458 } ,
6559
6660 "vary pack sint2" ( $ ) {
67- check ( - 256 / 2 - 1 , [ sint | - L2 , 127 , 255 ] )
68- check ( - ( 256 ** 2 ) / 2 , [ sint | - L2 , 0 , 128 ] )
61+ check ( [ - 256 / 2 - 1 ] , [ sint | - L2 , 127 , 255 ] )
62+ check ( [ - ( 256 ** 2 ) / 2 ] , [ sint | - L2 , 0 , 128 ] )
6963 } ,
7064
7165 "vary pack sint4" ( $ ) {
72- check ( - ( 256 ** 2 ) / 2 - 1 , [ sint | - L4 , 255 , 127 , 255 , 255 ] )
73- check ( - ( 256 ** 4 ) / 2 , [ sint | - L4 , 0 , 0 , 0 , 128 ] )
66+ check ( [ - ( 256 ** 2 ) / 2 - 1 ] , [ sint | - L4 , 255 , 127 , 255 , 255 ] )
67+ check ( [ - ( 256 ** 4 ) / 2 ] , [ sint | - L4 , 0 , 0 , 0 , 128 ] )
7468 } ,
7569
7670 "vary pack sint8" ( $ ) {
77- check ( - ( 256 ** 4 ) / 2 - 1 , [ sint | - L8 , 255 , 255 , 255 , 127 , 255 , 255 , 255 , 255 ] )
78- check ( Number . MIN_SAFE_INTEGER , [ sint | - L8 , 1 , 0 , 0 , 0 , 0 , 0 , 224 , 255 ] )
79- check ( - ( 256n ** 8n ) / 2n , [ sint | - L8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 128 ] )
71+ check ( [ - ( 256 ** 4 ) / 2 - 1 ] , [ sint | - L8 , 255 , 255 , 255 , 127 , 255 , 255 , 255 , 255 ] )
72+ check ( [ Number . MIN_SAFE_INTEGER ] , [ sint | - L8 , 1 , 0 , 0 , 0 , 0 , 0 , 224 , 255 ] )
73+ check ( [ - ( 2n ** 63n ) ] , [ sint | - L8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 128 ] )
8074 } ,
8175
8276 "vary pack bigint" ( $ ) {
83- check ( 2n ** 64n , [ sint | - LA , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] )
84- check ( 2n ** 2104n , [ sint | - LA , 255 , ... Array . from ( { length : 263 } , ( ) => 0 ) , 1 ] )
85- check ( - 1n - 2n ** 64n , [ sint | - LA , 0 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 254 ] )
86- check ( - 1n - 2n ** 2104n , [ sint | - LA , 255 , ... Array . from ( { length : 263 } , ( ) => 255 ) , 254 ] )
77+ check ( [ 2n ** 64n ] , [ sint | - LA , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] )
78+ check ( [ 2n ** 2111n ] , [ sint | - LA , 0 , 1 , ... Array . from ( { length : 263 } , ( ) => 0 ) , 128 , 0 ] )
79+ check ( [ - 1n - 2n ** 64n ] , [ sint | - LA , 0 , 0 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 255 , 254 ] )
80+ check ( [ - 1n - 2n ** 2111n ] , [ sint | - LA , 0 , 1 , ... Array . from ( { length : 263 } , ( ) => 255 ) , - 129 , 255 ] )
8781 } ,
8882
8983 "vary pack float" ( $ ) {
90- check ( 1.5 , [ fp64 , ... new Uint8Array ( new Float64Array ( [ 1.5 ] ) . buffer ) ] )
84+ check ( [ 1.5 ] , [ fp64 , ... new Uint8Array ( new Float64Array ( [ 1.5 ] ) . buffer ) ] )
9185 } ,
9286
9387 "vary pack list" ( $ ) {
9488 check (
95- [ 1 , 2 , 3 ] ,
89+ [ [ 1 , 2 , 3 ] ] ,
9690 [ list | 3 , 1 , 2 , 3 ] ,
9791 )
9892 check (
99- [ [ ] , [ 1 ] , [ 2 , 3 ] ] ,
93+ [ [ [ ] , [ 1 ] , [ 2 , 3 ] ] ] ,
10094 [ list | 3 , list | 0 , list | 1 , 1 , list | 2 , 2 , 3 ] ,
10195 )
10296 } ,
10397
10498 "vary pack dedup list" ( $ ) {
10599 const pair = [ 1 , 2 ]
106100 check (
107- [ pair , pair ] ,
101+ [ [ pair , pair ] ] ,
108102 [ list | 2 , list | 2 , 1 , 2 , link | 0 ] ,
109103 )
110104 const seven = [ 7 ]
111105 const box = [ seven ]
112106 check (
113- [ box , box , seven ] ,
107+ [ [ box , box , seven ] ] ,
114108 [ list | 3 , list | 1 , list | 1 , 7 , link | 1 , link | 0 ] ,
115109 )
116110 } ,
117111
118112 "vary pack cyclic list" ( $ ) {
119113 const foo = [ ] as any [ ]
120114 foo . push ( [ foo ] )
121- $mol_assert_fail ( ( ) => $mol_vary . pack ( foo ) , 'Cyclic refs' )
115+ $mol_assert_fail ( ( ) => $mol_vary . pack ( [ foo ] ) , 'Cyclic refs' )
122116 } ,
123117
124118 "vary pack dedup uint" ( $ ) {
125119 check (
126- [ 28 , 28 ] ,
120+ [ [ 28 , 28 ] ] ,
127121 [ list | 2 , uint | L1 , 28 , link | 0 ] ,
128122 )
129123 check (
130- [ 2n ** 64n , 2n ** 64n ] ,
131- [ list | 2 , sint | - LA , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , link | 0 ] ,
124+ [ [ 2n ** 64n , 2n ** 64n ] ] ,
125+ [ list | 2 , sint | - LA , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , link | 0 ] ,
132126 )
133127 } ,
134128
135129 "vary pack dedup float" ( $ ) {
136130 check (
137- [ 1.5 , 1.5 ] ,
131+ [ [ 1.5 , 1.5 ] ] ,
138132 [ list | 2 , fp64 , ... new Uint8Array ( new Float64Array ( [ 1.5 ] ) . buffer ) , link | 0 ] ,
139133 )
140134 } ,
141135
142136 "vary pack text" ( $ ) {
143- check ( 'foo' , [ text | 3 , ... str ( 'foo' ) ] )
137+ check ( [ 'foo' ] , [ text | 3 , ... str ( 'foo' ) ] )
144138 const long = 'abcdefghijklmnopqrstuvwxyzЖЫ'
145- check ( long , [ text | L1 , 28 , ... str ( long ) ] )
139+ check ( [ long ] , [ text | L1 , 28 , ... str ( long ) ] )
146140 } ,
147141
148142 "vary pack dedup text" ( $ ) {
149143 check (
150- [ "f" , "f" ] ,
144+ [ [ "f" , "f" ] ] ,
151145 [ list | 2 , text | 1 , ... str ( 'f' ) , link | 0 ] ,
152146 )
153147 } ,
154148
155149 "vary pack blob" ( $ ) {
156150 check (
157- new Uint8Array ( [ 1 , 255 ] ) ,
151+ [ new Uint8Array ( [ 1 , 255 ] ) ] ,
158152 [ blob | 2 , uint | L1 , 1 , 255 ] ,
159153 )
160154 check (
161- new Int8Array ( [ - 128 , 127 ] ) ,
155+ [ new Int8Array ( [ - 128 , 127 ] ) ] ,
162156 [ blob | 2 , sint | ~ L1 , - 128 , 127 ] ,
163157 )
164158 check (
165- new Uint32Array ( [ 255 ] ) ,
159+ [ new Uint32Array ( [ 255 ] ) ] ,
166160 [ blob | 4 , uint | L4 , 255 , 0 , 0 , 0 ] ,
167161 )
168162 check (
169- new Int32Array ( [ - 128 ] ) ,
163+ [ new Int32Array ( [ - 128 ] ) ] ,
170164 [ blob | 4 , sint | ~ L4 , - 128 , 255 , 255 , 255 ] ,
171165 )
172166 check (
173- new BigUint64Array ( [ 255n ] ) ,
167+ [ new BigUint64Array ( [ 255n ] ) ] ,
174168 [ blob | 8 , uint | L8 , 255 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ,
175169 )
176170 check (
177- new BigInt64Array ( [ - 128n ] ) ,
171+ [ new BigInt64Array ( [ - 128n ] ) ] ,
178172 [ blob | 8 , sint | ~ L8 , - 128 , 255 , 255 , 255 , 255 , 255 , 255 , 255 ] ,
179173 )
180174 check (
181- new Float32Array ( [ 1.5 ] ) ,
175+ [ new Float32Array ( [ 1.5 ] ) ] ,
182176 [ blob | 4 , fp32 , ... new Uint8Array ( new Float32Array ( [ 1.5 ] ) . buffer ) ] ,
183177 )
184178 check (
185- new Float64Array ( [ 1.5 ] ) ,
179+ [ new Float64Array ( [ 1.5 ] ) ] ,
186180 [ blob | 8 , fp64 , ... new Uint8Array ( new Float64Array ( [ 1.5 ] ) . buffer ) ] ,
187181 )
188182 } ,
189183
190184 "vary pack dedup blob" ( $ ) {
191185 const part = new Uint8Array ( [ 1 , 2 ] )
192186 check (
193- [ part , part ] ,
187+ [ [ part , part ] ] ,
194188 [ list | 2 , blob | 2 , uint | L1 , 1 , 2 , link | 0 ] ,
195189 )
196190 } ,
197191
198192 "vary pack struct" ( $ ) {
199193 check (
200- { x : 1 , y : 2 } ,
194+ [ { x : 1 , y : 2 } ] ,
201195 [ tupl | 2 , list | 2 , text | 1 , ... str ( 'x' ) , text | 1 , ... str ( 'y' ) , 1 , 2 ] ,
202196 )
203197 check (
204- { x : { } , y : { a : 1 } } ,
198+ [ { x : { } , y : { a : 1 } } ] ,
205199 [ tupl | 2 , list | 2 , text | 1 , ... str ( 'x' ) , text | 1 , ... str ( 'y' ) , tupl | 0 , list | 0 , tupl | 1 , list | 1 , text | 1 , ... str ( 'a' ) , 1 ] ,
206200 )
207201 } ,
208202
209203 "vary pack struct shape dedup" ( $ ) {
210204 check (
211- [ { } , { foo : 1 } , { foo : 2 } ] ,
205+ [ [ { } , { foo : 1 } , { foo : 2 } ] ] ,
212206 [ list | 3 , tupl | 0 , list | 0 , tupl | 1 , list | 1 , text | 3 , ... str ( 'foo' ) , 1 , tupl | 1 , link | 3 , 2 ] ,
213207 )
214208 check (
215- { x : 1 , y : { x : 2 , y : 3 } } ,
209+ [ { x : 1 , y : { x : 2 , y : 3 } } ] ,
216210 [ tupl | 2 , list | 2 , text | 1 , ... str ( 'x' ) , text | 1 , ... str ( 'y' ) , 1 , tupl | 2 , link | 2 , 2 , 3 ] ,
217211 )
218212 } ,
219213
220214 "vary pack struct full dedup" ( $ ) {
221215 const item = { x : 1 }
222216 check (
223- [ item , item ] ,
217+ [ [ item , item ] ] ,
224218 [ list | 2 , tupl | 1 , list | 1 , text | 1 , ... str ( 'x' ) , 1 , link | 2 ] ,
225219 )
226220 const part = { x : 1 , y : 2 }
227221 check (
228- { x : part , y : part } ,
222+ [ { x : part , y : part } ] ,
229223 [ tupl | 2 , list | 2 , text | 1 , ... str ( 'x' ) , text | 1 , ... str ( 'y' ) , tupl | 2 , link | 2 , 1 , 2 , link | 3 ] ,
230224 )
231225 } ,
@@ -239,7 +233,7 @@ namespace $.$$ {
239233 "vary pack Map" ( $ ) {
240234
241235 check (
242- new Map < any , any > ( [ [ 'foo' , 1 ] , [ 2 , 'bar' ] ] ) ,
236+ [ new Map < any , any > ( [ [ 'foo' , 1 ] , [ 2 , 'bar' ] ] ) ] ,
243237 [ tupl | 2 , list | 2 , text | 4 , ... str ( 'keys' ) , text | 4 , ... str ( 'vals' ) , list | 2 , text | 3 , ... str ( 'foo' ) , 2 , list | 2 , 1 , text | 3 , ... str ( 'bar' ) ] ,
244238 )
245239
@@ -248,7 +242,7 @@ namespace $.$$ {
248242 "vary pack Set" ( $ ) {
249243
250244 check (
251- new Set ( [ 7 , 'foo' ] ) ,
245+ [ new Set ( [ 7 , 'foo' ] ) ] ,
252246 [ tupl | 1 , list | 1 , text | 3 , ... str ( 'set' ) , list | 2 , 7 , text | 3 , ... str ( 'foo' ) ] ,
253247 )
254248
@@ -258,13 +252,13 @@ namespace $.$$ {
258252
259253 const date1 = new Date ( '2025-01-02T03:04:05' )
260254 check (
261- date1 ,
255+ [ date1 ] ,
262256 [ tupl | 1 , list | 1 , text | 9 , ... str ( 'unix_time' ) , uint | L4 , ... new Uint8Array ( new Uint32Array ( [ date1 . valueOf ( ) / 1000 ] ) . buffer ) ] ,
263257 )
264258
265259 const date2 = new Date ( '2025-01-02T03:04:05.678' )
266260 check (
267- date2 ,
261+ [ date2 ] ,
268262 [ tupl | 1 , list | 1 , text | 9 , ... str ( 'unix_time' ) , fp64 , ... new Uint8Array ( new Float64Array ( [ date2 . valueOf ( ) / 1000 ] ) . buffer ) ] ,
269263 )
270264
@@ -303,7 +297,7 @@ namespace $.$$ {
303297
304298 // restore
305299 check (
306- new Foo ( 4 , 2 ) ,
300+ [ new Foo ( 4 , 2 ) ] ,
307301 [ tupl | 2 , list | 2 , text | 4 , ... str ( 'summ' ) , text | 4 , ... str ( 'diff' ) , 6 , 2 ] ,
308302 Vary ,
309303 )
@@ -322,5 +316,18 @@ namespace $.$$ {
322316
323317 } ,
324318
319+ "vary pack sequences" ( $ ) {
320+
321+ check ( [ ] , [ ] )
322+ check ( [ 7 ] , [ 7 ] )
323+ check ( [ 3 , 4 ] , [ 3 , 4 ] )
324+
325+ check (
326+ [ [ 'foo' , 'foo' ] , [ 'bar' , 'bar' ] ] ,
327+ [ list | 2 , text | 3 , ... str ( 'foo' ) , link | 0 , list | 2 , text | 3 , ... str ( 'bar' ) , link | 0 ] ,
328+ )
329+
330+ } ,
331+
325332 } )
326333}
0 commit comments