blob: 0b1b987d6b34c05c36f9e2a16f05a014ef122f6a [file] [log] [blame]
#!/usr/bin/env dart
// Copyright (c) 2015, 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.
library const_generator_test;
import 'package:protoc_plugin/const_generator.dart';
import 'package:protoc_plugin/indenting_writer.dart';
import 'package:test/test.dart';
String toConst(val) {
var out = new IndentingWriter();
writeJsonConst(out, val);
return out.toString();
}
void main() {
test('writeJsonConst examples', () {
expect(toConst(null), "null");
expect(toConst(true), "true");
expect(toConst(false), "false");
expect(toConst(123), "123");
expect(toConst(123.456), "123.456");
});
test('writeJsonConst string examples', () {
expect(toConst(""), "''");
expect(toConst("hello"), "'hello'");
expect(toConst(r"backslash: \"), r"r'backslash: \'");
expect(toConst(r"hello $world"), r"r'hello $world'");
expect(toConst("She said, 'hello.'"), '''"She said, 'hello.'"''');
expect(toConst('''single: ' double: "'''), """'''single: ' double: "'''""");
var triple = '"""';
expect(toConst("""single: ' double: " triple: '''"""),
"""${triple}single: ' double: " triple: '''$triple""");
expect(
toConst("""single: ' double: " triples: ''' and $triple!"""),
"r'''\n"
"single: ' double: \" triples: ''' \"'''\" r''' and $triple!'''");
});
test('writeJsonConst list examples', () {
expect(toConst([]), "const []");
expect(toConst([1, 2, 3]), "const [1, 2, 3]");
expect(
toConst([
[1, 2],
[3, 4]
]),
'const [\n'
' const [1, 2],\n'
' const [3, 4],\n'
']');
});
test('writeJsonConst map examples', () {
expect(toConst({}), "const {}");
expect(toConst({"a": 1, "b": 2}), "const {'a': 1, 'b': 2}");
expect(
toConst({
"a": {"x": 1},
"b": {"x": 2}
}),
"const {\n"
" 'a': const {'x': 1},\n"
" 'b': const {'x': 2},\n"
"}");
});
}