| Index: tests/lib/convert/json_test.dart
|
| diff --git a/tests/lib/convert/json_test.dart b/tests/lib/convert/json_test.dart
|
| index 0cf304897263aa76bb5f2a55a6fe9e7f3e8eb692..cfed8d9e0429edf0824cc47985043b3a82f63ab4 100644
|
| --- a/tests/lib/convert/json_test.dart
|
| +++ b/tests/lib/convert/json_test.dart
|
| @@ -27,22 +27,52 @@ void testJson(json, expected) {
|
| } else if (expected is num) {
|
| Expect.equals(expected is int, actual is int, "$path: same number type");
|
| Expect.isTrue(expected.compareTo(actual) == 0,
|
| - "$path: $expected vs. $actual");
|
| + "$path: Expected: $expected, was: $actual");
|
| } else {
|
| // String, bool, null.
|
| Expect.equals(expected, actual, path);
|
| }
|
| }
|
| for (var reviver in [null, (k, v) => v]) {
|
| - var name = (reviver == null) ? "" : "reviver:";
|
| - var value = JSON.decode(json, reviver: reviver);
|
| - compare(expected, value, "$name$value");
|
| - value = JSON.decode(" $json ", reviver: reviver);
|
| - compare(expected, value, "$name-$value-");
|
| - value = JSON.decode("[$json]", reviver: reviver);
|
| - compare([expected], value, "$name[$value]");
|
| - value = JSON.decode('{"x":$json}', reviver: reviver);
|
| - compare({"x":expected}, value, "$name{x:$value}");
|
| + for (var split in [0, 1, 2, 3]) {
|
| + var name = (reviver == null) ? "" : "reviver:";
|
| + var sink = new ChunkedConversionSink.withCallback((values) {
|
| + var value = values[0];
|
| + compare(expected, value, "$name$value");
|
| + });
|
| + var decoderSink = JSON.decoder.startChunkedConversion(sink);
|
| + switch (split) {
|
| + case 0:
|
| + // Split after first char.
|
| + decoderSink.add(json.substring(0, 1));
|
| + decoderSink.add(json.substring(1));
|
| + decoderSink.close();
|
| + break;
|
| + case 1:
|
| + // Split before last char.
|
| + int length = json.length;
|
| + decoderSink.add(json.substring(0, length - 1));
|
| + decoderSink.add(json.substring(length - 1));
|
| + decoderSink.close();
|
| + break;
|
| + case 2:
|
| + // Split in middle.
|
| + int half = json.length ~/ 2;
|
| + decoderSink.add(json.substring(0, half));
|
| + decoderSink.add(json.substring(half));
|
| + decoderSink.close();
|
| + break;
|
| + case 3:
|
| + // Split in three chunks.
|
| + int length = json.length;
|
| + int third = length ~/ 3;
|
| + decoderSink.add(json.substring(0, third));
|
| + decoderSink.add(json.substring(third, 2 * third));
|
| + decoderSink.add(json.substring(2 * third));
|
| + decoderSink.close();
|
| + break;
|
| + }
|
| + }
|
| }
|
| }
|
|
|
| @@ -81,9 +111,11 @@ testNumbers() {
|
| for (var sign in signList) {
|
| for (var fraction in fractionList) {
|
| for (var exp in exponentList) {
|
| - var literal = "$sign$integer$fraction$exp";
|
| - var expectedValue = num.parse(literal);
|
| - testJson(literal, expectedValue);
|
| + for (var ws in ["", " ", "\t"]) {
|
| + var literal = "$ws$sign$integer$fraction$exp$ws";
|
| + var expectedValue = num.parse(literal);
|
| + testJson(literal, expectedValue);
|
| + }
|
| }
|
| }
|
| }
|
|
|