| 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));
 | 
| +}
 | 
| 
 |