Index: test/codegen/lib/convert/json_pretty_test.dart |
diff --git a/test/codegen/lib/convert/json_pretty_test.dart b/test/codegen/lib/convert/json_pretty_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..62380525aca53d9fb240278d45f6c52bb6015247 |
--- /dev/null |
+++ b/test/codegen/lib/convert/json_pretty_test.dart |
@@ -0,0 +1,116 @@ |
+// Copyright (c) 2014, 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. |
+ |
+// Note: This test relies on LF line endings in the source file. |
+ |
+library json_pretty_test; |
+ |
+import 'dart:convert'; |
+ |
+import "package:expect/expect.dart"; |
+ |
+void _testIndentWithNullChar() { |
+ var encoder = const JsonEncoder.withIndent('\x00'); |
+ var encoded = encoder.convert([[],[[]]]); |
+ Expect.equals("[\n\x00[],\n\x00[\n\x00\x00[]\n\x00]\n]", encoded); |
+} |
+ |
+void main() { |
+ _testIndentWithNullChar(); |
+ |
+ _expect(null, 'null'); |
+ |
+ _expect([[],[[]]], ''' |
+[ |
+ [], |
+ [ |
+ [] |
+ ] |
+]'''); |
+ |
+ _expect([1, 2, 3, 4], ''' |
+[ |
+ 1, |
+ 2, |
+ 3, |
+ 4 |
+]'''); |
+ |
+ _expect([true, null, 'hello', 42.42], |
+ ''' |
+[ |
+ true, |
+ null, |
+ "hello", |
+ 42.42 |
+]'''); |
+ |
+ _expect({"hello": [], "goodbye": {} } , |
+'''{ |
+ "hello": [], |
+ "goodbye": {} |
+}'''); |
+ |
+ _expect(["test", 1, 2, 33234.324, true, false, null, { |
+ "test1": "test2", |
+ "test3": "test4", |
+ "grace": 5, |
+ "shanna": [0, 1, 2] |
+ }, { |
+ "lib": "app.dart", |
+ "src": ["foo.dart", "bar.dart"] |
+ }], |
+ '''[ |
+ "test", |
+ 1, |
+ 2, |
+ 33234.324, |
+ true, |
+ false, |
+ null, |
+ { |
+ "test1": "test2", |
+ "test3": "test4", |
+ "grace": 5, |
+ "shanna": [ |
+ 0, |
+ 1, |
+ 2 |
+ ] |
+ }, |
+ { |
+ "lib": "app.dart", |
+ "src": [ |
+ "foo.dart", |
+ "bar.dart" |
+ ] |
+ } |
+]'''); |
+} |
+ |
+void _expect(Object object, String expected) { |
+ var encoder = const JsonEncoder.withIndent(' '); |
+ var prettyOutput = encoder.convert(object); |
+ |
+ Expect.equals(expected, prettyOutput); |
+ |
+ encoder = const JsonEncoder.withIndent(''); |
+ |
+ var flatOutput = encoder.convert(object); |
+ |
+ var flatExpected = const LineSplitter().convert(expected) |
+ .map((line) => line.trimLeft()) |
+ .join('\n'); |
+ |
+ Expect.equals(flatExpected, flatOutput); |
+ |
+ var compactOutput = JSON.encode(object); |
+ |
+ encoder = const JsonEncoder.withIndent(null); |
+ Expect.equals(compactOutput, encoder.convert(object)); |
+ |
+ var prettyDecoded = JSON.decode(prettyOutput); |
+ |
+ Expect.equals(compactOutput, JSON.encode(prettyDecoded)); |
+} |