blob: c069423b400ae44702ee26bc521764a797968148 [file] [log] [blame]
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:_fe_analyzer_shared/src/macros/executor_shared/serialization.dart';
import 'package:test/test.dart';
void main() {
group('json serializer', () {
test('can serialize and deserialize data', () {
var serializer = JsonSerializer();
serializer
..addNum(1)
..addNullableNum(null)
..addString('hello')
..addNullableString(null)
..startList()
..addBool(true)
..startList()
..addNull()
..endList()
..addNullableBool(null)
..endList()
..addNum(1.0)
..startList()
..endList();
expect(
serializer.result,
equals([
1,
null,
'hello',
null,
[
true,
[null],
null
],
1.0,
[],
]));
var deserializer = JsonDeserializer(serializer.result);
expect(deserializer.moveNext(), true);
expect(deserializer.expectNum(), 1);
expect(deserializer.moveNext(), true);
expect(deserializer.expectNullableNum(), null);
expect(deserializer.moveNext(), true);
expect(deserializer.expectString(), 'hello');
expect(deserializer.moveNext(), true);
expect(deserializer.expectNullableString(), null);
expect(deserializer.moveNext(), true);
deserializer.expectList();
expect(deserializer.moveNext(), true);
expect(deserializer.expectBool(), true);
expect(deserializer.moveNext(), true);
deserializer.expectList();
expect(deserializer.moveNext(), true);
expect(deserializer.checkNull(), true);
expect(deserializer.moveNext(), false);
expect(deserializer.moveNext(), true);
expect(deserializer.expectNullableBool(), null);
expect(deserializer.moveNext(), false);
// Have to move the parent again to advance it past the list entry.
expect(deserializer.moveNext(), true);
expect(deserializer.expectNum(), 1.0);
expect(deserializer.moveNext(), true);
deserializer.expectList();
expect(deserializer.moveNext(), false);
expect(deserializer.moveNext(), false);
});
});
}