blob: ce2f79212b0256e44e860804fdca23afa70e869d [file] [log] [blame]
// Basic smoke tests for the GeneratedMessage JSON API.
//
// There are more JSON tests in the dart-protoc-plugin package.
library json_test;
import 'dart:convert';
import 'package:fixnum/fixnum.dart' show Int64;
import 'package:test/test.dart';
import 'mock_util.dart' show T;
void main() {
var example = T()
..val = 123
..str = 'hello'
..int32s.addAll(<int>[1, 2, 3]);
test('testWriteToJson', () {
var json = example.writeToJson();
checkJsonMap(jsonDecode(json));
});
test('testWriteFrozenToJson', () {
final frozen = example.clone()..freeze();
final json = frozen.writeToJson();
checkJsonMap(jsonDecode(json));
});
test('writeToJsonMap', () {
Map m = example.writeToJsonMap();
checkJsonMap(m);
});
test('testMergeFromJson', () {
var t = T();
t.mergeFromJson('''{"1": 123, "2": "hello"}''');
checkMessage(t);
});
test('testMergeFromJsonMap', () {
var t = T();
t.mergeFromJsonMap({'1': 123, '2': 'hello'});
checkMessage(t);
});
test('testInt64JsonEncoding', () {
final value = Int64.parseInt('1234567890123456789');
final t = T()..int64 = value;
final encoded = t.writeToJsonMap();
expect(encoded['5'], '$value');
final decoded = T()..mergeFromJsonMap(encoded);
expect(decoded.int64, value);
});
test('tesFrozentInt64JsonEncoding', () {
final value = Int64.parseInt('1234567890123456789');
final frozen = T()
..int64 = value
..freeze();
final encoded = frozen.writeToJsonMap();
expect(encoded['5'], '$value');
final decoded = T()..mergeFromJsonMap(encoded);
expect(decoded.int64, value);
});
}
void checkJsonMap(Map m) {
expect(m.length, 3);
expect(m['1'], 123);
expect(m['2'], 'hello');
expect(m['4'], [1, 2, 3]);
}
void checkMessage(T t) {
expect(t.val, 123);
expect(t.str, 'hello');
}