Index: test/codegen/expect/lib/convert/json_utf8_chunk_test.js |
diff --git a/test/codegen/expect/lib/convert/json_utf8_chunk_test.js b/test/codegen/expect/lib/convert/json_utf8_chunk_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8b455bbb8817f3451cb426c7039ff6768dd0ddda |
--- /dev/null |
+++ b/test/codegen/expect/lib/convert/json_utf8_chunk_test.js |
@@ -0,0 +1,443 @@ |
+dart_library.library('lib/convert/json_utf8_chunk_test', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__json_utf8_chunk_test(exports, dart_sdk, expect) { |
+ 'use strict'; |
+ const core = dart_sdk.core; |
+ const convert = dart_sdk.convert; |
+ const _interceptors = dart_sdk._interceptors; |
+ const dart = dart_sdk.dart; |
+ const dartx = dart_sdk.dartx; |
+ const expect$ = expect.expect; |
+ const json_utf8_chunk_test = Object.create(null); |
+ const unicode_tests = Object.create(null); |
+ let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.functionType(dart.dynamic, [dart.dynamic])))(); |
+ let JSArrayOfString = () => (JSArrayOfString = dart.constFn(_interceptors.JSArray$(core.String)))(); |
+ let JSArrayOfbool = () => (JSArrayOfbool = dart.constFn(_interceptors.JSArray$(core.bool)))(); |
+ let JSArrayOfObject = () => (JSArrayOfObject = dart.constFn(_interceptors.JSArray$(core.Object)))(); |
+ let JSArrayOfint = () => (JSArrayOfint = dart.constFn(_interceptors.JSArray$(core.int)))(); |
+ let ListOfObject = () => (ListOfObject = dart.constFn(core.List$(core.Object)))(); |
+ let ListOfList = () => (ListOfList = dart.constFn(core.List$(core.List)))(); |
+ let dynamicTobool = () => (dynamicTobool = dart.constFn(dart.definiteFunctionType(core.bool, [dart.dynamic])))(); |
+ let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); |
+ let dynamicTodynamic$ = () => (dynamicTodynamic$ = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))(); |
+ let dynamicAnddynamicAndFn__Tovoid = () => (dynamicAnddynamicAndFn__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dynamicTodynamic()], [core.bool])))(); |
+ let ListTovoid = () => (ListTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.List])))(); |
+ let dynamicAnddynamicAnddynamic__Tovoid = () => (dynamicAnddynamicAnddynamic__Tovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic], [core.bool])))(); |
+ let VoidTovoid = () => (VoidTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [])))(); |
+ let dynamicAnddynamicAndFnTovoid = () => (dynamicAnddynamicAndFnTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dynamicTodynamic()])))(); |
+ let dynamicAnddynamicAnddynamicTovoid = () => (dynamicAnddynamicAnddynamicTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [dart.dynamic, dart.dynamic, dart.dynamic])))(); |
+ let dynamicAnddynamicTodynamic = () => (dynamicAnddynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic, dart.dynamic])))(); |
+ let StringAndStringTovoid = () => (StringAndStringTovoid = dart.constFn(dart.definiteFunctionType(dart.void, [core.String, core.String])))(); |
+ let ListOfObjectToListOfObject = () => (ListOfObjectToListOfObject = dart.constFn(dart.definiteFunctionType(ListOfObject(), [ListOfObject()])))(); |
+ let VoidToListOfList = () => (VoidToListOfList = dart.constFn(dart.definiteFunctionType(ListOfList(), [])))(); |
+ json_utf8_chunk_test.badFormat = function(e) { |
+ return core.FormatException.is(e); |
+ }; |
+ dart.fn(json_utf8_chunk_test.badFormat, dynamicTobool()); |
+ json_utf8_chunk_test.main = function() { |
+ json_utf8_chunk_test.testNumbers(); |
+ json_utf8_chunk_test.testStrings(); |
+ json_utf8_chunk_test.testKeywords(); |
+ json_utf8_chunk_test.testAll(); |
+ json_utf8_chunk_test.testMalformed(); |
+ json_utf8_chunk_test.testUnicodeTests(); |
+ }; |
+ dart.fn(json_utf8_chunk_test.main, VoidTodynamic()); |
+ json_utf8_chunk_test.jsonTest = function(testName, expect, action, allowMalformed) { |
+ if (allowMalformed === void 0) allowMalformed = false; |
+ json_utf8_chunk_test.jsonParse(testName, dart.fn(value => { |
+ expect$.Expect.equals(expect, value, dart.str`${testName}:${value}`); |
+ }, dynamicTodynamic$()), action, allowMalformed); |
+ }; |
+ dart.fn(json_utf8_chunk_test.jsonTest, dynamicAnddynamicAndFn__Tovoid()); |
+ json_utf8_chunk_test.jsonParse = function(testName, check, action, allowMalformed) { |
+ if (allowMalformed === void 0) allowMalformed = false; |
+ let sink = convert.ChunkedConversionSink.withCallback(dart.fn(values => { |
+ let value = values[dartx.get](0); |
+ dart.dcall(check, value); |
+ }, ListTovoid())); |
+ let decoderSink = convert.JSON.decoder.startChunkedConversion(sink).asUtf8Sink(allowMalformed); |
+ try { |
+ dart.dcall(action, decoderSink); |
+ } catch (e) { |
+ if (core.FormatException.is(e)) { |
+ let s = dart.stackTrace(e); |
+ core.print(dart.str`Source: ${e.source} @ ${e.offset}`); |
+ expect$.Expect.fail(dart.str`Unexpected throw(${testName}): ${e}\n${s}`); |
+ } else |
+ throw e; |
+ } |
+ |
+ }; |
+ dart.fn(json_utf8_chunk_test.jsonParse, dynamicAnddynamicAnddynamic__Tovoid()); |
+ json_utf8_chunk_test.testStrings = function() { |
+ let s = '"abc\\f\\ndef\\r\\t\\b\\"\\/\\\\\\u0001\\u9999\\uffff' + 'Âß¿à ï¿¿' + 'ðô¿¿"'; |
+ let expected = "abc\f\ndef\r\t\b\"/\\香" + "߿ࠀ" + "𐀀"; |
+ for (let i = 1; i < dart.notNull(s[dartx.length]) - 1; i++) { |
+ let s1 = s[dartx.substring](0, i); |
+ let s2 = s[dartx.substring](i); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2}-${i}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2}-${i}-slice`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], 0, i, false); |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], i, s[dartx.length], true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(s[dartx.length]) - 1; j++) { |
+ let s2a = s[dartx.substring](i, j); |
+ let s2b = s[dartx.substring](j); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2a}|${s2b}-${i}-${j}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2a[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2b[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.testStrings, VoidTovoid()); |
+ json_utf8_chunk_test.testNumbers = function() { |
+ for (let number of JSArrayOfString().of(["-0.12e-12", "-34.12E+12", "0.0e0", "9.9E9", "0", "9" + "1234.56789123456701418035663664340972900390625", "1.2345678912345671e-14", "99999999999999999999"])) { |
+ let expected = core.num.parse(number); |
+ for (let i = 1; i < dart.notNull(number[dartx.length]) - 1; i++) { |
+ let p1 = number[dartx.substring](0, i); |
+ let p2 = number[dartx.substring](i); |
+ json_utf8_chunk_test.jsonTest(dart.str`${p1}|${p2}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', p1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', p2[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ json_utf8_chunk_test.jsonTest(dart.str`${p1}|${p2}/slice`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', number[dartx.codeUnits], 0, i, false); |
+ dart.dsend(sink, 'addSlice', number[dartx.codeUnits], i, number[dartx.length], true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(number[dartx.length]) - 1; j++) { |
+ let p2a = number[dartx.substring](i, j); |
+ let p2b = number[dartx.substring](j); |
+ json_utf8_chunk_test.jsonTest(dart.str`${p1}|${p2a}|${p2b}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', p1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', p2a[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', p2b[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.testNumbers, VoidTovoid()); |
+ json_utf8_chunk_test.testKeywords = function() { |
+ for (let expected of JSArrayOfbool().of([null, true, false])) { |
+ let s = dart.str`${expected}`; |
+ for (let i = 1; i < dart.notNull(s[dartx.length]) - 1; i++) { |
+ let s1 = s[dartx.substring](0, i); |
+ let s2 = s[dartx.substring](i); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], 0, i, false); |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], i, s[dartx.length], true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(s[dartx.length]) - 1; j++) { |
+ let s2a = s[dartx.substring](i, j); |
+ let s2b = s[dartx.substring](j); |
+ json_utf8_chunk_test.jsonTest(dart.str`${s1}|${s2a}|${s2b}`, expected, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2a[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2b[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.testKeywords, VoidTovoid()); |
+ json_utf8_chunk_test.testAll = function() { |
+ let s = '{"":[true,false,42, -33e-3,null,"\\u0080"], "z": 0}'; |
+ function check(o) { |
+ if (core.Map.is(o)) { |
+ expect$.Expect.equals(2, o[dartx.length]); |
+ expect$.Expect.equals(0, o[dartx.get]("z")); |
+ let v = o[dartx.get](""); |
+ if (core.List.is(v)) { |
+ expect$.Expect.listEquals(JSArrayOfObject().of([true, false, 42, -0.033, null, ""]), v); |
+ } else { |
+ expect$.Expect.fail(dart.str`Expected list, found ${dart.runtimeType(v)}`); |
+ } |
+ } else { |
+ expect$.Expect.fail(dart.str`Expected map, found ${dart.runtimeType(o)}`); |
+ } |
+ } |
+ dart.fn(check, dynamicTobool()); |
+ for (let i = 1; i < dart.notNull(s[dartx.length]) - 1; i++) { |
+ let s1 = s[dartx.substring](0, i); |
+ let s2 = s[dartx.substring](i); |
+ json_utf8_chunk_test.jsonParse(dart.str`${s1}|${s2}-${i}`, check, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ json_utf8_chunk_test.jsonParse(dart.str`${s1}|${s2}-${i}-slice`, check, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], 0, i, false); |
+ dart.dsend(sink, 'addSlice', s[dartx.codeUnits], i, s[dartx.length], true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(s[dartx.length]) - 1; j++) { |
+ let s2a = s[dartx.substring](i, j); |
+ let s2b = s[dartx.substring](j); |
+ json_utf8_chunk_test.jsonParse(dart.str`${s1}|${s2a}|${s2b}-${i}-${j}`, check, dart.fn(sink => { |
+ dart.dsend(sink, 'add', s1[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2a[dartx.codeUnits]); |
+ dart.dsend(sink, 'add', s2b[dartx.codeUnits]); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.testAll, VoidTovoid()); |
+ json_utf8_chunk_test.jsonMalformedTest = function(name, expect, codes) { |
+ function test(name, expect, action) { |
+ let tag = dart.str`Malform:${name}-${expect}`; |
+ { |
+ let sink = convert.ChunkedConversionSink.withCallback(dart.fn(values => { |
+ let value = values[dartx.get](0); |
+ expect$.Expect.equals(expect, value, tag); |
+ }, ListTovoid())); |
+ let decoderSink = convert.JSON.decoder.startChunkedConversion(sink).asUtf8Sink(true); |
+ try { |
+ dart.dcall(action, decoderSink); |
+ } catch (e) { |
+ let s = dart.stackTrace(e); |
+ expect$.Expect.fail(dart.str`Unexpected throw (${tag}): ${e}\n${s}`); |
+ } |
+ |
+ } |
+ { |
+ let sink = convert.ChunkedConversionSink.withCallback(dart.fn(values => { |
+ expect$.Expect.fail(tag); |
+ }, ListTovoid())); |
+ let decoderSink = convert.JSON.decoder.startChunkedConversion(sink).asUtf8Sink(false); |
+ expect$.Expect.throws(dart.fn(() => { |
+ dart.dcall(action, decoderSink); |
+ }, VoidTovoid()), null, tag); |
+ } |
+ } |
+ dart.fn(test, dynamicAnddynamicAndFnTovoid()); |
+ for (let i = 1; i < dart.notNull(core.num._check(dart.dsend(dart.dload(codes, 'length'), '-', 1))); i++) { |
+ test(dart.str`${name}:${i}`, expect, dart.fn(sink => { |
+ dart.dsend(sink, 'add', dart.dsend(codes, 'sublist', 0, i)); |
+ dart.dsend(sink, 'add', dart.dsend(codes, 'sublist', i)); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ test(dart.str`${name}:${i}-slice`, expect, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', codes, 0, i, false); |
+ dart.dsend(sink, 'addSlice', codes, i, dart.dload(codes, 'length'), true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(core.num._check(dart.dsend(dart.dload(codes, 'length'), '-', 1))); j++) { |
+ test(dart.str`${name}:${i}|${j}`, expect, dart.fn(sink => { |
+ dart.dsend(sink, 'add', dart.dsend(codes, 'sublist', 0, i)); |
+ dart.dsend(sink, 'add', dart.dsend(codes, 'sublist', i, j)); |
+ dart.dsend(sink, 'add', dart.dsend(codes, 'sublist', j)); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.jsonMalformedTest, dynamicAnddynamicAnddynamicTovoid()); |
+ json_utf8_chunk_test.jsonThrows = function(name, codeString) { |
+ function testJsonThrows(tag, action) { |
+ let sink = convert.ChunkedConversionSink.withCallback(dart.fn(values => { |
+ expect$.Expect.fail(core.String._check(tag)); |
+ }, ListTovoid())); |
+ let decoderSink = convert.JSON.decoder.startChunkedConversion(sink).asUtf8Sink(true); |
+ expect$.Expect.throws(dart.fn(() => { |
+ dart.dcall(action, decoderSink); |
+ }, VoidTovoid()), null, core.String._check(tag)); |
+ } |
+ dart.fn(testJsonThrows, dynamicAnddynamicTodynamic()); |
+ let codes = codeString[dartx.codeUnits]; |
+ for (let i = 1; i < dart.notNull(codes[dartx.length]) - 1; i++) { |
+ testJsonThrows(dart.str`${name}:${i}`, dart.fn(sink => { |
+ dart.dsend(sink, 'add', codes[dartx.sublist](0, i)); |
+ dart.dsend(sink, 'add', codes[dartx.sublist](i)); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ testJsonThrows(dart.str`${name}:${i}-slice`, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', codes, 0, i, false); |
+ dart.dsend(sink, 'addSlice', codes, i, codes[dartx.length], true); |
+ }, dynamicTodynamic$())); |
+ for (let j = i; j < dart.notNull(codes[dartx.length]) - 1; j++) { |
+ testJsonThrows(dart.str`${name}:${i}|${j}`, dart.fn(sink => { |
+ dart.dsend(sink, 'add', codes[dartx.sublist](0, i)); |
+ dart.dsend(sink, 'add', codes[dartx.sublist](i, j)); |
+ dart.dsend(sink, 'add', codes[dartx.sublist](j)); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.jsonThrows, StringAndStringTovoid()); |
+ json_utf8_chunk_test.testMalformed = function() { |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-0-2", "@�@", JSArrayOfint().of([34, 64, 192, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-0-3", "@�@", JSArrayOfint().of([34, 64, 224, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-0-4", "@�@", JSArrayOfint().of([34, 64, 240, 128, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-7f-2", "@�@", JSArrayOfint().of([34, 64, 193, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-7f-3", "@�@", JSArrayOfint().of([34, 64, 224, 129, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-7f-4", "@�@", JSArrayOfint().of([34, 64, 240, 128, 129, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-80-3", "@�@", JSArrayOfint().of([34, 64, 224, 130, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-80-4", "@�@", JSArrayOfint().of([34, 64, 240, 128, 130, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-7ff-3", "@�@", JSArrayOfint().of([34, 64, 224, 159, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-7ff-4", "@�@", JSArrayOfint().of([34, 64, 240, 128, 159, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-800-4", "@�@", JSArrayOfint().of([34, 64, 240, 128, 160, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("overlong-ffff-4", "@�@", JSArrayOfint().of([34, 64, 240, 143, 191, 191, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-2-normal", "@�@", JSArrayOfint().of([34, 64, 192, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-3-normal", "@�@", JSArrayOfint().of([34, 64, 224, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-4-normal", "@�@", JSArrayOfint().of([34, 64, 240, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-2-multi", "@�@", JSArrayOfint().of([34, 64, 192, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-3-multi", "@�@", JSArrayOfint().of([34, 64, 224, 128, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-4-multi", "@�@", JSArrayOfint().of([34, 64, 240, 128, 128, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-2-escape", "@�\n@", JSArrayOfint().of([34, 64, 192, 92, 110, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-3-escape", "@�\n@", JSArrayOfint().of([34, 64, 224, 128, 92, 110, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-4-escape", "@�\n@", JSArrayOfint().of([34, 64, 240, 128, 128, 92, 110, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-2-end", "@�", JSArrayOfint().of([34, 64, 192, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-3-end", "@�", JSArrayOfint().of([34, 64, 224, 128, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("unterminated-4-end", "@�", JSArrayOfint().of([34, 64, 240, 128, 128, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-normal", "@�@", JSArrayOfint().of([34, 64, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-continuation-2", "@�@", JSArrayOfint().of([34, 64, 194, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-continuation-3", "@ࠀ�@", JSArrayOfint().of([34, 64, 224, 160, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-continuation-4", "@𐀀�@", JSArrayOfint().of([34, 64, 240, 144, 128, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-twice", "@���@", JSArrayOfint().of([34, 64, 128, 128, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("continuation-start", "�@", JSArrayOfint().of([34, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-2", "@�@", JSArrayOfint().of([34, 64, 192, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-3-1", "@�@", JSArrayOfint().of([34, 64, 224, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-3-2", "@�@", JSArrayOfint().of([34, 64, 224, 128, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-4-1", "@�@", JSArrayOfint().of([34, 64, 240, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-4-2", "@�@", JSArrayOfint().of([34, 64, 240, 128, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonMalformedTest("leading-4-3", "@�@", JSArrayOfint().of([34, 64, 240, 128, 128, 194, 128, 64, 34])); |
+ json_utf8_chunk_test.jsonThrows("number-1", "À«0.0e-0"); |
+ json_utf8_chunk_test.jsonThrows("number-2", "-À°.0e-0"); |
+ json_utf8_chunk_test.jsonThrows("number-3", "-0˨0e-0"); |
+ json_utf8_chunk_test.jsonThrows("number-4", "-0.À°e-0"); |
+ json_utf8_chunk_test.jsonThrows("number-5", "-0.0Á¥-0"); |
+ json_utf8_chunk_test.jsonThrows("number-6", "-0.0eÀ«0"); |
+ json_utf8_chunk_test.jsonThrows("number-7", "-0.0e-À°"); |
+ json_utf8_chunk_test.jsonThrows("true-1", "Á´rue"); |
+ json_utf8_chunk_test.jsonThrows("true-2", "tÁ²ue"); |
+ json_utf8_chunk_test.jsonThrows("true-3", "trÁµe"); |
+ json_utf8_chunk_test.jsonThrows("true-4", "truÁ¥"); |
+ json_utf8_chunk_test.jsonThrows("false-1", "Á¦alse"); |
+ json_utf8_chunk_test.jsonThrows("false-2", "fÁ¡lse"); |
+ json_utf8_chunk_test.jsonThrows("false-3", "faÁ¬se"); |
+ json_utf8_chunk_test.jsonThrows("false-4", "falÁ³e"); |
+ json_utf8_chunk_test.jsonThrows("false-5", "falsÁ¥"); |
+ json_utf8_chunk_test.jsonThrows("null-1", "Á®ull"); |
+ json_utf8_chunk_test.jsonThrows("null-2", "nÁµll"); |
+ json_utf8_chunk_test.jsonThrows("null-3", "nuÁ¬l"); |
+ json_utf8_chunk_test.jsonThrows("null-4", "nulÁ¬"); |
+ json_utf8_chunk_test.jsonThrows("array-1", "Á0,0]"); |
+ json_utf8_chunk_test.jsonThrows("array-2", "[0,0Á"); |
+ json_utf8_chunk_test.jsonThrows("array-2", "[0À¬0]"); |
+ json_utf8_chunk_test.jsonThrows("object-1", 'Á»"x":0}'); |
+ json_utf8_chunk_test.jsonThrows("object-2", '{"x":0Á½'); |
+ json_utf8_chunk_test.jsonThrows("object-2", '{"x˼0}'); |
+ json_utf8_chunk_test.jsonThrows("string-1", 'À¢x"'); |
+ json_utf8_chunk_test.jsonThrows("string-1", '"xˢ'); |
+ json_utf8_chunk_test.jsonThrows("whitespace-1", "À 1"); |
+ }; |
+ dart.fn(json_utf8_chunk_test.testMalformed, VoidTovoid()); |
+ json_utf8_chunk_test.testUnicodeTests = function() { |
+ for (let pair of unicode_tests.UNICODE_TESTS) { |
+ let bytes = dart.dindex(pair, 0); |
+ let string = dart.dindex(pair, 1); |
+ let step = 1; |
+ if (dart.test(dart.dsend(dart.dload(bytes, 'length'), '>', 100))) step = core.int._check(dart.dsend(dart.dload(bytes, 'length'), '~/', 13)); |
+ for (let i = 1; dart.notNull(i) < dart.notNull(core.num._check(dart.dsend(dart.dload(bytes, 'length'), '-', 1))); i = dart.notNull(i) + dart.notNull(step)) { |
+ json_utf8_chunk_test.jsonTest(dart.str`${string}:${i}`, string, dart.fn(sink => { |
+ dart.dsend(sink, 'add', JSArrayOfint().of([34])); |
+ dart.dsend(sink, 'add', dart.dsend(bytes, 'sublist', 0, i)); |
+ dart.dsend(sink, 'add', dart.dsend(bytes, 'sublist', i)); |
+ dart.dsend(sink, 'add', JSArrayOfint().of([34])); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ json_utf8_chunk_test.jsonTest(dart.str`${string}:${i}-slice`, string, dart.fn(sink => { |
+ dart.dsend(sink, 'addSlice', JSArrayOfint().of([34]), 0, 1, false); |
+ dart.dsend(sink, 'addSlice', bytes, 0, i, false); |
+ dart.dsend(sink, 'addSlice', bytes, i, dart.dload(bytes, 'length'), false); |
+ dart.dsend(sink, 'addSlice', JSArrayOfint().of([34]), 0, 1, true); |
+ }, dynamicTodynamic$())); |
+ let skip = 1; |
+ if (dart.test(dart.dsend(dart.dload(bytes, 'length'), '>', 25))) skip = core.int._check(dart.dsend(dart.dload(bytes, 'length'), '~/', 17)); |
+ for (let j = i; dart.notNull(j) < dart.notNull(core.num._check(dart.dsend(dart.dload(bytes, 'length'), '-', 1))); j = dart.notNull(j) + dart.notNull(skip)) { |
+ json_utf8_chunk_test.jsonTest(dart.str`${string}:${i}|${j}`, string, dart.fn(sink => { |
+ dart.dsend(sink, 'add', JSArrayOfint().of([34])); |
+ dart.dsend(sink, 'add', dart.dsend(bytes, 'sublist', 0, i)); |
+ dart.dsend(sink, 'add', dart.dsend(bytes, 'sublist', i, j)); |
+ dart.dsend(sink, 'add', dart.dsend(bytes, 'sublist', j)); |
+ dart.dsend(sink, 'add', JSArrayOfint().of([34])); |
+ dart.dsend(sink, 'close'); |
+ }, dynamicTodynamic$())); |
+ } |
+ } |
+ } |
+ }; |
+ dart.fn(json_utf8_chunk_test.testUnicodeTests, VoidTovoid()); |
+ unicode_tests.INTER_BYTES = dart.constList([195, 142, 195, 177, 197, 163, 195, 169, 114, 195, 177, 195, 165, 197, 163, 195, 174, 195, 182, 195, 177, 195, 165, 196, 188, 195, 174, 197, 190, 195, 165, 197, 163, 195, 174, 225, 187, 157, 195, 177], core.int); |
+ unicode_tests.INTER_STRING = "Îñţérñåţîöñåļîžåţîờñ"; |
+ unicode_tests.BLUEBERRY_BYTES = dart.constList([98, 108, 195, 165, 98, 195, 166, 114, 103, 114, 195, 184, 100], core.int); |
+ unicode_tests.BLUEBERRY_STRING = "blåbærgrød"; |
+ unicode_tests.SIVA_BYTES1 = dart.constList([224, 174, 154, 224, 174, 191, 224, 174, 181, 224, 174, 190, 32, 224, 174, 133, 224, 174, 163, 224, 174, 190, 224, 174, 174, 224, 174, 190, 224, 175, 136, 224, 174, 178], core.int); |
+ unicode_tests.SIVA_STRING1 = "சிவா அணாமாைல"; |
+ unicode_tests.SIVA_BYTES2 = dart.constList([224, 164, 191, 224, 164, 184, 224, 164, 181, 224, 164, 190, 32, 224, 164, 133, 224, 164, 163, 224, 164, 190, 224, 164, 174, 224, 164, 190, 224, 164, 178, 224, 165, 136], core.int); |
+ unicode_tests.SIVA_STRING2 = "िसवा अणामालै"; |
+ unicode_tests.BEE_BYTES = dart.constList([240, 144, 144, 146], core.int); |
+ unicode_tests.BEE_STRING = "𐐒"; |
+ unicode_tests.DIGIT_BYTES = dart.constList([53], core.int); |
+ unicode_tests.DIGIT_STRING = "5"; |
+ unicode_tests.ASCII_BYTES = dart.constList([97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122], core.int); |
+ unicode_tests.ASCII_STRING = "abcdefghijklmnopqrstuvwxyz"; |
+ unicode_tests.BIGGEST_ASCII_BYTES = dart.constList([127], core.int); |
+ unicode_tests.BIGGEST_ASCII_STRING = ""; |
+ unicode_tests.SMALLEST_2_UTF8_UNIT_BYTES = dart.constList([194, 128], core.int); |
+ unicode_tests.SMALLEST_2_UTF8_UNIT_STRING = ""; |
+ unicode_tests.BIGGEST_2_UTF8_UNIT_BYTES = dart.constList([223, 191], core.int); |
+ unicode_tests.BIGGEST_2_UTF8_UNIT_STRING = "߿"; |
+ unicode_tests.SMALLEST_3_UTF8_UNIT_BYTES = dart.constList([224, 160, 128], core.int); |
+ unicode_tests.SMALLEST_3_UTF8_UNIT_STRING = "ࠀ"; |
+ unicode_tests.BIGGEST_3_UTF8_UNIT_BYTES = dart.constList([239, 191, 191], core.int); |
+ unicode_tests.BIGGEST_3_UTF8_UNIT_STRING = ""; |
+ unicode_tests.SMALLEST_4_UTF8_UNIT_BYTES = dart.constList([240, 144, 128, 128], core.int); |
+ unicode_tests.SMALLEST_4_UTF8_UNIT_STRING = "𐀀"; |
+ unicode_tests.BIGGEST_4_UTF8_UNIT_BYTES = dart.constList([244, 143, 191, 191], core.int); |
+ unicode_tests.BIGGEST_4_UTF8_UNIT_STRING = ""; |
+ unicode_tests._TEST_PAIRS = dart.constList([dart.constList([dart.constList([], dart.dynamic), ""], core.Object), dart.constList([unicode_tests.INTER_BYTES, unicode_tests.INTER_STRING], core.Object), dart.constList([unicode_tests.BLUEBERRY_BYTES, unicode_tests.BLUEBERRY_STRING], core.Object), dart.constList([unicode_tests.SIVA_BYTES1, unicode_tests.SIVA_STRING1], core.Object), dart.constList([unicode_tests.SIVA_BYTES2, unicode_tests.SIVA_STRING2], core.Object), dart.constList([unicode_tests.BEE_BYTES, unicode_tests.BEE_STRING], core.Object), dart.constList([unicode_tests.DIGIT_BYTES, unicode_tests.DIGIT_STRING], core.Object), dart.constList([unicode_tests.ASCII_BYTES, unicode_tests.ASCII_STRING], core.Object), dart.constList([unicode_tests.BIGGEST_ASCII_BYTES, unicode_tests.BIGGEST_ASCII_STRING], core.Object), dart.constList([unicode_tests.SMALLEST_2_UTF8_UNIT_BYTES, unicode_tests.SMALLEST_2_UTF8_UNIT_STRING], core.Object), dart.constList([unicode_tests.BIGGEST_2_UTF8_UNIT_BYTES, unicode_tests.BIGGEST_2_UTF8_UNIT_STRING], core.Object), dart.constList([unicode_tests.SMALLEST_3_UTF8_UNIT_BYTES, unicode_tests.SMALLEST_3_UTF8_UNIT_STRING], core.Object), dart.constList([unicode_tests.BIGGEST_3_UTF8_UNIT_BYTES, unicode_tests.BIGGEST_3_UTF8_UNIT_STRING], core.Object), dart.constList([unicode_tests.SMALLEST_4_UTF8_UNIT_BYTES, unicode_tests.SMALLEST_4_UTF8_UNIT_STRING], core.Object), dart.constList([unicode_tests.BIGGEST_4_UTF8_UNIT_BYTES, unicode_tests.BIGGEST_4_UTF8_UNIT_STRING], core.Object)], ListOfObject()); |
+ unicode_tests._expandTestPairs = function() { |
+ dart.assert(2 == unicode_tests.BEE_STRING[dartx.length]); |
+ let tests = []; |
+ tests[dartx.addAll](unicode_tests._TEST_PAIRS); |
+ tests[dartx.addAll](unicode_tests._TEST_PAIRS[dartx.map](ListOfObject())(dart.fn(test => { |
+ let bytes = test[dartx.get](0); |
+ let string = test[dartx.get](1); |
+ let longBytes = []; |
+ let longString = ""; |
+ for (let i = 0; i < 100; i++) { |
+ longBytes[dartx.addAll](core.Iterable._check(bytes)); |
+ longString = dart.notNull(longString) + dart.notNull(core.String._check(string)); |
+ } |
+ return JSArrayOfObject().of([longBytes, longString]); |
+ }, ListOfObjectToListOfObject()))); |
+ return ListOfList()._check(tests); |
+ }; |
+ dart.fn(unicode_tests._expandTestPairs, VoidToListOfList()); |
+ dart.defineLazy(unicode_tests, { |
+ get UNICODE_TESTS() { |
+ return unicode_tests._expandTestPairs(); |
+ } |
+ }); |
+ // Exports: |
+ exports.json_utf8_chunk_test = json_utf8_chunk_test; |
+ exports.unicode_tests = unicode_tests; |
+}); |