xref: /aosp_15_r20/external/flatbuffers/dart/test/flex_builder_test.dart (revision 890232f25432b36107d06881e0a25aaa6b473652)
1*890232f2SAndroid Build Coastguard Workerimport 'dart:typed_data';
2*890232f2SAndroid Build Coastguard Worker
3*890232f2SAndroid Build Coastguard Workerimport 'package:flat_buffers/flex_buffers.dart' show Builder;
4*890232f2SAndroid Build Coastguard Workerimport 'package:test/test.dart';
5*890232f2SAndroid Build Coastguard Worker
6*890232f2SAndroid Build Coastguard Workervoid main() {
7*890232f2SAndroid Build Coastguard Worker  test('build with single value', () {
8*890232f2SAndroid Build Coastguard Worker    {
9*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
10*890232f2SAndroid Build Coastguard Worker      flx.addNull();
11*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [0, 0, 1]);
12*890232f2SAndroid Build Coastguard Worker    }
13*890232f2SAndroid Build Coastguard Worker    {
14*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
15*890232f2SAndroid Build Coastguard Worker      flx.addBool(true);
16*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 104, 1]);
17*890232f2SAndroid Build Coastguard Worker    }
18*890232f2SAndroid Build Coastguard Worker    {
19*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
20*890232f2SAndroid Build Coastguard Worker      flx.addBool(false);
21*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [0, 104, 1]);
22*890232f2SAndroid Build Coastguard Worker    }
23*890232f2SAndroid Build Coastguard Worker    {
24*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
25*890232f2SAndroid Build Coastguard Worker      flx.addInt(1);
26*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 4, 1]);
27*890232f2SAndroid Build Coastguard Worker    }
28*890232f2SAndroid Build Coastguard Worker    {
29*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
30*890232f2SAndroid Build Coastguard Worker      flx.addInt(230);
31*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [230, 0, 5, 2]);
32*890232f2SAndroid Build Coastguard Worker    }
33*890232f2SAndroid Build Coastguard Worker    {
34*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
35*890232f2SAndroid Build Coastguard Worker      flx.addInt(1025);
36*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 4, 5, 2]);
37*890232f2SAndroid Build Coastguard Worker    }
38*890232f2SAndroid Build Coastguard Worker    {
39*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
40*890232f2SAndroid Build Coastguard Worker      flx.addInt(-1025);
41*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [255, 251, 5, 2]);
42*890232f2SAndroid Build Coastguard Worker    }
43*890232f2SAndroid Build Coastguard Worker    {
44*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
45*890232f2SAndroid Build Coastguard Worker      flx.addDouble(0.1);
46*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [154, 153, 153, 153, 153, 153, 185, 63, 15, 8]);
47*890232f2SAndroid Build Coastguard Worker    }
48*890232f2SAndroid Build Coastguard Worker    {
49*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
50*890232f2SAndroid Build Coastguard Worker      flx.addDouble(0.5);
51*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [0, 0, 0, 63, 14, 4]);
52*890232f2SAndroid Build Coastguard Worker    }
53*890232f2SAndroid Build Coastguard Worker    {
54*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
55*890232f2SAndroid Build Coastguard Worker      flx.addString('Maxim');
56*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [5, 77, 97, 120, 105, 109, 0, 6, 20, 1]);
57*890232f2SAndroid Build Coastguard Worker    }
58*890232f2SAndroid Build Coastguard Worker    {
59*890232f2SAndroid Build Coastguard Worker      var flx = Builder();
60*890232f2SAndroid Build Coastguard Worker      flx.addString('hello ��');
61*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(),
62*890232f2SAndroid Build Coastguard Worker          [10, 104, 101, 108, 108, 111, 32, 240, 159, 152, 177, 0, 11, 20, 1]);
63*890232f2SAndroid Build Coastguard Worker    }
64*890232f2SAndroid Build Coastguard Worker  });
65*890232f2SAndroid Build Coastguard Worker
66*890232f2SAndroid Build Coastguard Worker  test('build vector', () {
67*890232f2SAndroid Build Coastguard Worker    {
68*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
69*890232f2SAndroid Build Coastguard Worker        ..startVector()
70*890232f2SAndroid Build Coastguard Worker        ..addInt(1)
71*890232f2SAndroid Build Coastguard Worker        ..addInt(2)
72*890232f2SAndroid Build Coastguard Worker        ..end();
73*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 2, 2, 64, 1]);
74*890232f2SAndroid Build Coastguard Worker    }
75*890232f2SAndroid Build Coastguard Worker    {
76*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
77*890232f2SAndroid Build Coastguard Worker        ..startVector()
78*890232f2SAndroid Build Coastguard Worker        ..addInt(-1)
79*890232f2SAndroid Build Coastguard Worker        ..addInt(256)
80*890232f2SAndroid Build Coastguard Worker        ..end();
81*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [255, 255, 0, 1, 4, 65, 1]);
82*890232f2SAndroid Build Coastguard Worker    }
83*890232f2SAndroid Build Coastguard Worker    {
84*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
85*890232f2SAndroid Build Coastguard Worker        ..startVector()
86*890232f2SAndroid Build Coastguard Worker        ..addInt(-45)
87*890232f2SAndroid Build Coastguard Worker        ..addInt(256000)
88*890232f2SAndroid Build Coastguard Worker        ..end();
89*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [211, 255, 255, 255, 0, 232, 3, 0, 8, 66, 1]);
90*890232f2SAndroid Build Coastguard Worker    }
91*890232f2SAndroid Build Coastguard Worker    {
92*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
93*890232f2SAndroid Build Coastguard Worker        ..startVector()
94*890232f2SAndroid Build Coastguard Worker        ..addDouble(1.1)
95*890232f2SAndroid Build Coastguard Worker        ..addDouble(-256)
96*890232f2SAndroid Build Coastguard Worker        ..end();
97*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [
98*890232f2SAndroid Build Coastguard Worker        154,
99*890232f2SAndroid Build Coastguard Worker        153,
100*890232f2SAndroid Build Coastguard Worker        153,
101*890232f2SAndroid Build Coastguard Worker        153,
102*890232f2SAndroid Build Coastguard Worker        153,
103*890232f2SAndroid Build Coastguard Worker        153,
104*890232f2SAndroid Build Coastguard Worker        241,
105*890232f2SAndroid Build Coastguard Worker        63,
106*890232f2SAndroid Build Coastguard Worker        0,
107*890232f2SAndroid Build Coastguard Worker        0,
108*890232f2SAndroid Build Coastguard Worker        0,
109*890232f2SAndroid Build Coastguard Worker        0,
110*890232f2SAndroid Build Coastguard Worker        0,
111*890232f2SAndroid Build Coastguard Worker        0,
112*890232f2SAndroid Build Coastguard Worker        112,
113*890232f2SAndroid Build Coastguard Worker        192,
114*890232f2SAndroid Build Coastguard Worker        16,
115*890232f2SAndroid Build Coastguard Worker        75,
116*890232f2SAndroid Build Coastguard Worker        1
117*890232f2SAndroid Build Coastguard Worker      ]);
118*890232f2SAndroid Build Coastguard Worker    }
119*890232f2SAndroid Build Coastguard Worker    {
120*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
121*890232f2SAndroid Build Coastguard Worker        ..startVector()
122*890232f2SAndroid Build Coastguard Worker        ..addInt(1)
123*890232f2SAndroid Build Coastguard Worker        ..addInt(2)
124*890232f2SAndroid Build Coastguard Worker        ..addInt(4)
125*890232f2SAndroid Build Coastguard Worker        ..end();
126*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 2, 4, 3, 76, 1]);
127*890232f2SAndroid Build Coastguard Worker    }
128*890232f2SAndroid Build Coastguard Worker    {
129*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
130*890232f2SAndroid Build Coastguard Worker        ..startVector()
131*890232f2SAndroid Build Coastguard Worker        ..addInt(-1)
132*890232f2SAndroid Build Coastguard Worker        ..addInt(256)
133*890232f2SAndroid Build Coastguard Worker        ..addInt(4)
134*890232f2SAndroid Build Coastguard Worker        ..end();
135*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [255, 255, 0, 1, 4, 0, 6, 77, 1]);
136*890232f2SAndroid Build Coastguard Worker    }
137*890232f2SAndroid Build Coastguard Worker    {
138*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
139*890232f2SAndroid Build Coastguard Worker        ..startVector()
140*890232f2SAndroid Build Coastguard Worker        ..startVector()
141*890232f2SAndroid Build Coastguard Worker        ..addInt(61)
142*890232f2SAndroid Build Coastguard Worker        ..end()
143*890232f2SAndroid Build Coastguard Worker        ..addInt(64)
144*890232f2SAndroid Build Coastguard Worker        ..end();
145*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [1, 61, 2, 2, 64, 44, 4, 4, 40, 1]);
146*890232f2SAndroid Build Coastguard Worker    }
147*890232f2SAndroid Build Coastguard Worker    {
148*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
149*890232f2SAndroid Build Coastguard Worker        ..startVector()
150*890232f2SAndroid Build Coastguard Worker        ..addString('foo')
151*890232f2SAndroid Build Coastguard Worker        ..addString('bar')
152*890232f2SAndroid Build Coastguard Worker        ..addString('baz')
153*890232f2SAndroid Build Coastguard Worker        ..end();
154*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [
155*890232f2SAndroid Build Coastguard Worker        3,
156*890232f2SAndroid Build Coastguard Worker        102,
157*890232f2SAndroid Build Coastguard Worker        111,
158*890232f2SAndroid Build Coastguard Worker        111,
159*890232f2SAndroid Build Coastguard Worker        0,
160*890232f2SAndroid Build Coastguard Worker        3,
161*890232f2SAndroid Build Coastguard Worker        98,
162*890232f2SAndroid Build Coastguard Worker        97,
163*890232f2SAndroid Build Coastguard Worker        114,
164*890232f2SAndroid Build Coastguard Worker        0,
165*890232f2SAndroid Build Coastguard Worker        3,
166*890232f2SAndroid Build Coastguard Worker        98,
167*890232f2SAndroid Build Coastguard Worker        97,
168*890232f2SAndroid Build Coastguard Worker        122,
169*890232f2SAndroid Build Coastguard Worker        0,
170*890232f2SAndroid Build Coastguard Worker        3,
171*890232f2SAndroid Build Coastguard Worker        15,
172*890232f2SAndroid Build Coastguard Worker        11,
173*890232f2SAndroid Build Coastguard Worker        7,
174*890232f2SAndroid Build Coastguard Worker        3,
175*890232f2SAndroid Build Coastguard Worker        60,
176*890232f2SAndroid Build Coastguard Worker        1
177*890232f2SAndroid Build Coastguard Worker      ]);
178*890232f2SAndroid Build Coastguard Worker    }
179*890232f2SAndroid Build Coastguard Worker    {
180*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
181*890232f2SAndroid Build Coastguard Worker        ..startVector()
182*890232f2SAndroid Build Coastguard Worker        ..addString('foo')
183*890232f2SAndroid Build Coastguard Worker        ..addString('bar')
184*890232f2SAndroid Build Coastguard Worker        ..addString('baz')
185*890232f2SAndroid Build Coastguard Worker        ..addString('foo')
186*890232f2SAndroid Build Coastguard Worker        ..addString('bar')
187*890232f2SAndroid Build Coastguard Worker        ..addString('baz')
188*890232f2SAndroid Build Coastguard Worker        ..end();
189*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [
190*890232f2SAndroid Build Coastguard Worker        3,
191*890232f2SAndroid Build Coastguard Worker        102,
192*890232f2SAndroid Build Coastguard Worker        111,
193*890232f2SAndroid Build Coastguard Worker        111,
194*890232f2SAndroid Build Coastguard Worker        0,
195*890232f2SAndroid Build Coastguard Worker        3,
196*890232f2SAndroid Build Coastguard Worker        98,
197*890232f2SAndroid Build Coastguard Worker        97,
198*890232f2SAndroid Build Coastguard Worker        114,
199*890232f2SAndroid Build Coastguard Worker        0,
200*890232f2SAndroid Build Coastguard Worker        3,
201*890232f2SAndroid Build Coastguard Worker        98,
202*890232f2SAndroid Build Coastguard Worker        97,
203*890232f2SAndroid Build Coastguard Worker        122,
204*890232f2SAndroid Build Coastguard Worker        0,
205*890232f2SAndroid Build Coastguard Worker        6,
206*890232f2SAndroid Build Coastguard Worker        15,
207*890232f2SAndroid Build Coastguard Worker        11,
208*890232f2SAndroid Build Coastguard Worker        7,
209*890232f2SAndroid Build Coastguard Worker        18,
210*890232f2SAndroid Build Coastguard Worker        14,
211*890232f2SAndroid Build Coastguard Worker        10,
212*890232f2SAndroid Build Coastguard Worker        6,
213*890232f2SAndroid Build Coastguard Worker        60,
214*890232f2SAndroid Build Coastguard Worker        1
215*890232f2SAndroid Build Coastguard Worker      ]);
216*890232f2SAndroid Build Coastguard Worker    }
217*890232f2SAndroid Build Coastguard Worker    {
218*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
219*890232f2SAndroid Build Coastguard Worker        ..startVector()
220*890232f2SAndroid Build Coastguard Worker        ..addBool(true)
221*890232f2SAndroid Build Coastguard Worker        ..addBool(false)
222*890232f2SAndroid Build Coastguard Worker        ..addBool(true)
223*890232f2SAndroid Build Coastguard Worker        ..end();
224*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [3, 1, 0, 1, 3, 144, 1]);
225*890232f2SAndroid Build Coastguard Worker    }
226*890232f2SAndroid Build Coastguard Worker    {
227*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
228*890232f2SAndroid Build Coastguard Worker        ..startVector()
229*890232f2SAndroid Build Coastguard Worker        ..addString('foo')
230*890232f2SAndroid Build Coastguard Worker        ..addInt(1)
231*890232f2SAndroid Build Coastguard Worker        ..addInt(-5)
232*890232f2SAndroid Build Coastguard Worker        ..addDouble(1.3)
233*890232f2SAndroid Build Coastguard Worker        ..addBool(true)
234*890232f2SAndroid Build Coastguard Worker        ..end();
235*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [
236*890232f2SAndroid Build Coastguard Worker        3,
237*890232f2SAndroid Build Coastguard Worker        102,
238*890232f2SAndroid Build Coastguard Worker        111,
239*890232f2SAndroid Build Coastguard Worker        111,
240*890232f2SAndroid Build Coastguard Worker        0,
241*890232f2SAndroid Build Coastguard Worker        0,
242*890232f2SAndroid Build Coastguard Worker        0,
243*890232f2SAndroid Build Coastguard Worker        0,
244*890232f2SAndroid Build Coastguard Worker        5,
245*890232f2SAndroid Build Coastguard Worker        0,
246*890232f2SAndroid Build Coastguard Worker        0,
247*890232f2SAndroid Build Coastguard Worker        0,
248*890232f2SAndroid Build Coastguard Worker        0,
249*890232f2SAndroid Build Coastguard Worker        0,
250*890232f2SAndroid Build Coastguard Worker        0,
251*890232f2SAndroid Build Coastguard Worker        0,
252*890232f2SAndroid Build Coastguard Worker        15,
253*890232f2SAndroid Build Coastguard Worker        0,
254*890232f2SAndroid Build Coastguard Worker        0,
255*890232f2SAndroid Build Coastguard Worker        0,
256*890232f2SAndroid Build Coastguard Worker        0,
257*890232f2SAndroid Build Coastguard Worker        0,
258*890232f2SAndroid Build Coastguard Worker        0,
259*890232f2SAndroid Build Coastguard Worker        0,
260*890232f2SAndroid Build Coastguard Worker        1,
261*890232f2SAndroid Build Coastguard Worker        0,
262*890232f2SAndroid Build Coastguard Worker        0,
263*890232f2SAndroid Build Coastguard Worker        0,
264*890232f2SAndroid Build Coastguard Worker        0,
265*890232f2SAndroid Build Coastguard Worker        0,
266*890232f2SAndroid Build Coastguard Worker        0,
267*890232f2SAndroid Build Coastguard Worker        0,
268*890232f2SAndroid Build Coastguard Worker        251,
269*890232f2SAndroid Build Coastguard Worker        255,
270*890232f2SAndroid Build Coastguard Worker        255,
271*890232f2SAndroid Build Coastguard Worker        255,
272*890232f2SAndroid Build Coastguard Worker        255,
273*890232f2SAndroid Build Coastguard Worker        255,
274*890232f2SAndroid Build Coastguard Worker        255,
275*890232f2SAndroid Build Coastguard Worker        255,
276*890232f2SAndroid Build Coastguard Worker        205,
277*890232f2SAndroid Build Coastguard Worker        204,
278*890232f2SAndroid Build Coastguard Worker        204,
279*890232f2SAndroid Build Coastguard Worker        204,
280*890232f2SAndroid Build Coastguard Worker        204,
281*890232f2SAndroid Build Coastguard Worker        204,
282*890232f2SAndroid Build Coastguard Worker        244,
283*890232f2SAndroid Build Coastguard Worker        63,
284*890232f2SAndroid Build Coastguard Worker        1,
285*890232f2SAndroid Build Coastguard Worker        0,
286*890232f2SAndroid Build Coastguard Worker        0,
287*890232f2SAndroid Build Coastguard Worker        0,
288*890232f2SAndroid Build Coastguard Worker        0,
289*890232f2SAndroid Build Coastguard Worker        0,
290*890232f2SAndroid Build Coastguard Worker        0,
291*890232f2SAndroid Build Coastguard Worker        0,
292*890232f2SAndroid Build Coastguard Worker        20,
293*890232f2SAndroid Build Coastguard Worker        4,
294*890232f2SAndroid Build Coastguard Worker        4,
295*890232f2SAndroid Build Coastguard Worker        15,
296*890232f2SAndroid Build Coastguard Worker        104,
297*890232f2SAndroid Build Coastguard Worker        45,
298*890232f2SAndroid Build Coastguard Worker        43,
299*890232f2SAndroid Build Coastguard Worker        1
300*890232f2SAndroid Build Coastguard Worker      ]);
301*890232f2SAndroid Build Coastguard Worker    }
302*890232f2SAndroid Build Coastguard Worker  });
303*890232f2SAndroid Build Coastguard Worker
304*890232f2SAndroid Build Coastguard Worker  test('build map', () {
305*890232f2SAndroid Build Coastguard Worker    {
306*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
307*890232f2SAndroid Build Coastguard Worker        ..startMap()
308*890232f2SAndroid Build Coastguard Worker        ..addKey('a')
309*890232f2SAndroid Build Coastguard Worker        ..addInt(12)
310*890232f2SAndroid Build Coastguard Worker        ..end();
311*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [97, 0, 1, 3, 1, 1, 1, 12, 4, 2, 36, 1]);
312*890232f2SAndroid Build Coastguard Worker    }
313*890232f2SAndroid Build Coastguard Worker    {
314*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
315*890232f2SAndroid Build Coastguard Worker        ..startMap()
316*890232f2SAndroid Build Coastguard Worker        ..addKey('a')
317*890232f2SAndroid Build Coastguard Worker        ..addInt(12)
318*890232f2SAndroid Build Coastguard Worker        ..addKey('')
319*890232f2SAndroid Build Coastguard Worker        ..addInt(45)
320*890232f2SAndroid Build Coastguard Worker        ..end();
321*890232f2SAndroid Build Coastguard Worker      expect(
322*890232f2SAndroid Build Coastguard Worker          flx.finish(), [97, 0, 0, 2, 2, 5, 2, 1, 2, 45, 12, 4, 4, 4, 36, 1]);
323*890232f2SAndroid Build Coastguard Worker    }
324*890232f2SAndroid Build Coastguard Worker    {
325*890232f2SAndroid Build Coastguard Worker      var flx = Builder()
326*890232f2SAndroid Build Coastguard Worker        ..startVector()
327*890232f2SAndroid Build Coastguard Worker        ..startMap()
328*890232f2SAndroid Build Coastguard Worker        ..addKey('something')
329*890232f2SAndroid Build Coastguard Worker        ..addInt(12)
330*890232f2SAndroid Build Coastguard Worker        ..end()
331*890232f2SAndroid Build Coastguard Worker        ..startMap()
332*890232f2SAndroid Build Coastguard Worker        ..addKey('something')
333*890232f2SAndroid Build Coastguard Worker        ..addInt(45)
334*890232f2SAndroid Build Coastguard Worker        ..end()
335*890232f2SAndroid Build Coastguard Worker        ..end();
336*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [
337*890232f2SAndroid Build Coastguard Worker        115,
338*890232f2SAndroid Build Coastguard Worker        111,
339*890232f2SAndroid Build Coastguard Worker        109,
340*890232f2SAndroid Build Coastguard Worker        101,
341*890232f2SAndroid Build Coastguard Worker        116,
342*890232f2SAndroid Build Coastguard Worker        104,
343*890232f2SAndroid Build Coastguard Worker        105,
344*890232f2SAndroid Build Coastguard Worker        110,
345*890232f2SAndroid Build Coastguard Worker        103,
346*890232f2SAndroid Build Coastguard Worker        0,
347*890232f2SAndroid Build Coastguard Worker        1,
348*890232f2SAndroid Build Coastguard Worker        11,
349*890232f2SAndroid Build Coastguard Worker        1,
350*890232f2SAndroid Build Coastguard Worker        1,
351*890232f2SAndroid Build Coastguard Worker        1,
352*890232f2SAndroid Build Coastguard Worker        12,
353*890232f2SAndroid Build Coastguard Worker        4,
354*890232f2SAndroid Build Coastguard Worker        6,
355*890232f2SAndroid Build Coastguard Worker        1,
356*890232f2SAndroid Build Coastguard Worker        1,
357*890232f2SAndroid Build Coastguard Worker        45,
358*890232f2SAndroid Build Coastguard Worker        4,
359*890232f2SAndroid Build Coastguard Worker        2,
360*890232f2SAndroid Build Coastguard Worker        8,
361*890232f2SAndroid Build Coastguard Worker        4,
362*890232f2SAndroid Build Coastguard Worker        36,
363*890232f2SAndroid Build Coastguard Worker        36,
364*890232f2SAndroid Build Coastguard Worker        4,
365*890232f2SAndroid Build Coastguard Worker        40,
366*890232f2SAndroid Build Coastguard Worker        1
367*890232f2SAndroid Build Coastguard Worker      ]);
368*890232f2SAndroid Build Coastguard Worker    }
369*890232f2SAndroid Build Coastguard Worker  });
370*890232f2SAndroid Build Coastguard Worker
371*890232f2SAndroid Build Coastguard Worker  test('build blob', () {
372*890232f2SAndroid Build Coastguard Worker    {
373*890232f2SAndroid Build Coastguard Worker      var flx = Builder()..addBlob(Uint8List.fromList([1, 2, 3]).buffer);
374*890232f2SAndroid Build Coastguard Worker      expect(flx.finish(), [3, 1, 2, 3, 3, 100, 1]);
375*890232f2SAndroid Build Coastguard Worker    }
376*890232f2SAndroid Build Coastguard Worker  });
377*890232f2SAndroid Build Coastguard Worker
378*890232f2SAndroid Build Coastguard Worker  test('build from object', () {
379*890232f2SAndroid Build Coastguard Worker    expect(
380*890232f2SAndroid Build Coastguard Worker        Builder.buildFromObject(Uint8List.fromList([1, 2, 3]).buffer)
381*890232f2SAndroid Build Coastguard Worker            .asUint8List(),
382*890232f2SAndroid Build Coastguard Worker        [3, 1, 2, 3, 3, 100, 1]);
383*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject(null).asUint8List(), [0, 0, 1]);
384*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject(true).asUint8List(), [1, 104, 1]);
385*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject(false).asUint8List(), [0, 104, 1]);
386*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject(25).asUint8List(), [25, 4, 1]);
387*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject(-250).asUint8List(), [6, 255, 5, 2]);
388*890232f2SAndroid Build Coastguard Worker    expect(
389*890232f2SAndroid Build Coastguard Worker        Builder.buildFromObject(-2.50).asUint8List(), [0, 0, 32, 192, 14, 4]);
390*890232f2SAndroid Build Coastguard Worker    expect(Builder.buildFromObject('Maxim').asUint8List(),
391*890232f2SAndroid Build Coastguard Worker        [5, 77, 97, 120, 105, 109, 0, 6, 20, 1]);
392*890232f2SAndroid Build Coastguard Worker    expect(
393*890232f2SAndroid Build Coastguard Worker        Builder.buildFromObject([1, 3.3, 'max', true, null, false])
394*890232f2SAndroid Build Coastguard Worker            .asUint8List(),
395*890232f2SAndroid Build Coastguard Worker        [
396*890232f2SAndroid Build Coastguard Worker          3,
397*890232f2SAndroid Build Coastguard Worker          109,
398*890232f2SAndroid Build Coastguard Worker          97,
399*890232f2SAndroid Build Coastguard Worker          120,
400*890232f2SAndroid Build Coastguard Worker          0,
401*890232f2SAndroid Build Coastguard Worker          0,
402*890232f2SAndroid Build Coastguard Worker          0,
403*890232f2SAndroid Build Coastguard Worker          0,
404*890232f2SAndroid Build Coastguard Worker          6,
405*890232f2SAndroid Build Coastguard Worker          0,
406*890232f2SAndroid Build Coastguard Worker          0,
407*890232f2SAndroid Build Coastguard Worker          0,
408*890232f2SAndroid Build Coastguard Worker          0,
409*890232f2SAndroid Build Coastguard Worker          0,
410*890232f2SAndroid Build Coastguard Worker          0,
411*890232f2SAndroid Build Coastguard Worker          0,
412*890232f2SAndroid Build Coastguard Worker          1,
413*890232f2SAndroid Build Coastguard Worker          0,
414*890232f2SAndroid Build Coastguard Worker          0,
415*890232f2SAndroid Build Coastguard Worker          0,
416*890232f2SAndroid Build Coastguard Worker          0,
417*890232f2SAndroid Build Coastguard Worker          0,
418*890232f2SAndroid Build Coastguard Worker          0,
419*890232f2SAndroid Build Coastguard Worker          0,
420*890232f2SAndroid Build Coastguard Worker          102,
421*890232f2SAndroid Build Coastguard Worker          102,
422*890232f2SAndroid Build Coastguard Worker          102,
423*890232f2SAndroid Build Coastguard Worker          102,
424*890232f2SAndroid Build Coastguard Worker          102,
425*890232f2SAndroid Build Coastguard Worker          102,
426*890232f2SAndroid Build Coastguard Worker          10,
427*890232f2SAndroid Build Coastguard Worker          64,
428*890232f2SAndroid Build Coastguard Worker          31,
429*890232f2SAndroid Build Coastguard Worker          0,
430*890232f2SAndroid Build Coastguard Worker          0,
431*890232f2SAndroid Build Coastguard Worker          0,
432*890232f2SAndroid Build Coastguard Worker          0,
433*890232f2SAndroid Build Coastguard Worker          0,
434*890232f2SAndroid Build Coastguard Worker          0,
435*890232f2SAndroid Build Coastguard Worker          0,
436*890232f2SAndroid Build Coastguard Worker          1,
437*890232f2SAndroid Build Coastguard Worker          0,
438*890232f2SAndroid Build Coastguard Worker          0,
439*890232f2SAndroid Build Coastguard Worker          0,
440*890232f2SAndroid Build Coastguard Worker          0,
441*890232f2SAndroid Build Coastguard Worker          0,
442*890232f2SAndroid Build Coastguard Worker          0,
443*890232f2SAndroid Build Coastguard Worker          0,
444*890232f2SAndroid Build Coastguard Worker          0,
445*890232f2SAndroid Build Coastguard Worker          0,
446*890232f2SAndroid Build Coastguard Worker          0,
447*890232f2SAndroid Build Coastguard Worker          0,
448*890232f2SAndroid Build Coastguard Worker          0,
449*890232f2SAndroid Build Coastguard Worker          0,
450*890232f2SAndroid Build Coastguard Worker          0,
451*890232f2SAndroid Build Coastguard Worker          0,
452*890232f2SAndroid Build Coastguard Worker          0,
453*890232f2SAndroid Build Coastguard Worker          0,
454*890232f2SAndroid Build Coastguard Worker          0,
455*890232f2SAndroid Build Coastguard Worker          0,
456*890232f2SAndroid Build Coastguard Worker          0,
457*890232f2SAndroid Build Coastguard Worker          0,
458*890232f2SAndroid Build Coastguard Worker          0,
459*890232f2SAndroid Build Coastguard Worker          0,
460*890232f2SAndroid Build Coastguard Worker          4,
461*890232f2SAndroid Build Coastguard Worker          15,
462*890232f2SAndroid Build Coastguard Worker          20,
463*890232f2SAndroid Build Coastguard Worker          104,
464*890232f2SAndroid Build Coastguard Worker          0,
465*890232f2SAndroid Build Coastguard Worker          104,
466*890232f2SAndroid Build Coastguard Worker          54,
467*890232f2SAndroid Build Coastguard Worker          43,
468*890232f2SAndroid Build Coastguard Worker          1
469*890232f2SAndroid Build Coastguard Worker        ]);
470*890232f2SAndroid Build Coastguard Worker    expect(
471*890232f2SAndroid Build Coastguard Worker        Builder.buildFromObject([
472*890232f2SAndroid Build Coastguard Worker          {'something': 12},
473*890232f2SAndroid Build Coastguard Worker          {'something': 45}
474*890232f2SAndroid Build Coastguard Worker        ]).asUint8List(),
475*890232f2SAndroid Build Coastguard Worker        [
476*890232f2SAndroid Build Coastguard Worker          115,
477*890232f2SAndroid Build Coastguard Worker          111,
478*890232f2SAndroid Build Coastguard Worker          109,
479*890232f2SAndroid Build Coastguard Worker          101,
480*890232f2SAndroid Build Coastguard Worker          116,
481*890232f2SAndroid Build Coastguard Worker          104,
482*890232f2SAndroid Build Coastguard Worker          105,
483*890232f2SAndroid Build Coastguard Worker          110,
484*890232f2SAndroid Build Coastguard Worker          103,
485*890232f2SAndroid Build Coastguard Worker          0,
486*890232f2SAndroid Build Coastguard Worker          1,
487*890232f2SAndroid Build Coastguard Worker          11,
488*890232f2SAndroid Build Coastguard Worker          1,
489*890232f2SAndroid Build Coastguard Worker          1,
490*890232f2SAndroid Build Coastguard Worker          1,
491*890232f2SAndroid Build Coastguard Worker          12,
492*890232f2SAndroid Build Coastguard Worker          4,
493*890232f2SAndroid Build Coastguard Worker          6,
494*890232f2SAndroid Build Coastguard Worker          1,
495*890232f2SAndroid Build Coastguard Worker          1,
496*890232f2SAndroid Build Coastguard Worker          45,
497*890232f2SAndroid Build Coastguard Worker          4,
498*890232f2SAndroid Build Coastguard Worker          2,
499*890232f2SAndroid Build Coastguard Worker          8,
500*890232f2SAndroid Build Coastguard Worker          4,
501*890232f2SAndroid Build Coastguard Worker          36,
502*890232f2SAndroid Build Coastguard Worker          36,
503*890232f2SAndroid Build Coastguard Worker          4,
504*890232f2SAndroid Build Coastguard Worker          40,
505*890232f2SAndroid Build Coastguard Worker          1
506*890232f2SAndroid Build Coastguard Worker        ]);
507*890232f2SAndroid Build Coastguard Worker  });
508*890232f2SAndroid Build Coastguard Worker
509*890232f2SAndroid Build Coastguard Worker  test('add double indirectly', () {
510*890232f2SAndroid Build Coastguard Worker    var flx = Builder()..addDoubleIndirectly(0.1);
511*890232f2SAndroid Build Coastguard Worker    expect(flx.finish(), [154, 153, 153, 153, 153, 153, 185, 63, 8, 35, 1]);
512*890232f2SAndroid Build Coastguard Worker  });
513*890232f2SAndroid Build Coastguard Worker
514*890232f2SAndroid Build Coastguard Worker  test('add double indirectly to vector with cache', () {
515*890232f2SAndroid Build Coastguard Worker    var flx = Builder()
516*890232f2SAndroid Build Coastguard Worker      ..startVector()
517*890232f2SAndroid Build Coastguard Worker      ..addDoubleIndirectly(0.1, cache: true)
518*890232f2SAndroid Build Coastguard Worker      ..addDoubleIndirectly(0.1, cache: true)
519*890232f2SAndroid Build Coastguard Worker      ..addDoubleIndirectly(0.1, cache: true)
520*890232f2SAndroid Build Coastguard Worker      ..addDoubleIndirectly(0.1, cache: true)
521*890232f2SAndroid Build Coastguard Worker      ..end();
522*890232f2SAndroid Build Coastguard Worker    expect(flx.finish(), [
523*890232f2SAndroid Build Coastguard Worker      154,
524*890232f2SAndroid Build Coastguard Worker      153,
525*890232f2SAndroid Build Coastguard Worker      153,
526*890232f2SAndroid Build Coastguard Worker      153,
527*890232f2SAndroid Build Coastguard Worker      153,
528*890232f2SAndroid Build Coastguard Worker      153,
529*890232f2SAndroid Build Coastguard Worker      185,
530*890232f2SAndroid Build Coastguard Worker      63,
531*890232f2SAndroid Build Coastguard Worker      4,
532*890232f2SAndroid Build Coastguard Worker      9,
533*890232f2SAndroid Build Coastguard Worker      10,
534*890232f2SAndroid Build Coastguard Worker      11,
535*890232f2SAndroid Build Coastguard Worker      12,
536*890232f2SAndroid Build Coastguard Worker      35,
537*890232f2SAndroid Build Coastguard Worker      35,
538*890232f2SAndroid Build Coastguard Worker      35,
539*890232f2SAndroid Build Coastguard Worker      35,
540*890232f2SAndroid Build Coastguard Worker      8,
541*890232f2SAndroid Build Coastguard Worker      40,
542*890232f2SAndroid Build Coastguard Worker      1
543*890232f2SAndroid Build Coastguard Worker    ]);
544*890232f2SAndroid Build Coastguard Worker  });
545*890232f2SAndroid Build Coastguard Worker
546*890232f2SAndroid Build Coastguard Worker  test('add int indirectly', () {
547*890232f2SAndroid Build Coastguard Worker    var flx = Builder()..addIntIndirectly(2345234523452345);
548*890232f2SAndroid Build Coastguard Worker    expect(flx.finish(), [185, 115, 175, 118, 250, 84, 8, 0, 8, 27, 1]);
549*890232f2SAndroid Build Coastguard Worker  });
550*890232f2SAndroid Build Coastguard Worker
551*890232f2SAndroid Build Coastguard Worker  test('add int indirectly to vector with cache', () {
552*890232f2SAndroid Build Coastguard Worker    var flx = Builder()
553*890232f2SAndroid Build Coastguard Worker      ..startVector()
554*890232f2SAndroid Build Coastguard Worker      ..addIntIndirectly(2345234523452345, cache: true)
555*890232f2SAndroid Build Coastguard Worker      ..addIntIndirectly(2345234523452345, cache: true)
556*890232f2SAndroid Build Coastguard Worker      ..addIntIndirectly(2345234523452345, cache: true)
557*890232f2SAndroid Build Coastguard Worker      ..addIntIndirectly(2345234523452345, cache: true)
558*890232f2SAndroid Build Coastguard Worker      ..end();
559*890232f2SAndroid Build Coastguard Worker    expect(flx.finish(), [
560*890232f2SAndroid Build Coastguard Worker      185,
561*890232f2SAndroid Build Coastguard Worker      115,
562*890232f2SAndroid Build Coastguard Worker      175,
563*890232f2SAndroid Build Coastguard Worker      118,
564*890232f2SAndroid Build Coastguard Worker      250,
565*890232f2SAndroid Build Coastguard Worker      84,
566*890232f2SAndroid Build Coastguard Worker      8,
567*890232f2SAndroid Build Coastguard Worker      0,
568*890232f2SAndroid Build Coastguard Worker      4,
569*890232f2SAndroid Build Coastguard Worker      9,
570*890232f2SAndroid Build Coastguard Worker      10,
571*890232f2SAndroid Build Coastguard Worker      11,
572*890232f2SAndroid Build Coastguard Worker      12,
573*890232f2SAndroid Build Coastguard Worker      27,
574*890232f2SAndroid Build Coastguard Worker      27,
575*890232f2SAndroid Build Coastguard Worker      27,
576*890232f2SAndroid Build Coastguard Worker      27,
577*890232f2SAndroid Build Coastguard Worker      8,
578*890232f2SAndroid Build Coastguard Worker      40,
579*890232f2SAndroid Build Coastguard Worker      1
580*890232f2SAndroid Build Coastguard Worker    ]);
581*890232f2SAndroid Build Coastguard Worker  });
582*890232f2SAndroid Build Coastguard Worker
583*890232f2SAndroid Build Coastguard Worker  test('snapshot', () {
584*890232f2SAndroid Build Coastguard Worker    var flx = Builder();
585*890232f2SAndroid Build Coastguard Worker    flx.startVector();
586*890232f2SAndroid Build Coastguard Worker    flx.addInt(12);
587*890232f2SAndroid Build Coastguard Worker    expect(flx.snapshot().asUint8List(), [1, 12, 1, 44, 1]);
588*890232f2SAndroid Build Coastguard Worker    flx.addInt(24);
589*890232f2SAndroid Build Coastguard Worker    expect(flx.snapshot().asUint8List(), [12, 24, 2, 64, 1]);
590*890232f2SAndroid Build Coastguard Worker    flx.addInt(45);
591*890232f2SAndroid Build Coastguard Worker    expect(flx.snapshot().asUint8List(), [12, 24, 45, 3, 76, 1]);
592*890232f2SAndroid Build Coastguard Worker  });
593*890232f2SAndroid Build Coastguard Worker}
594