Index: LayoutTests/inspector/json-balanced-tokenizer.html |
diff --git a/LayoutTests/inspector/json-balanced-tokenizer.html b/LayoutTests/inspector/json-balanced-tokenizer.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..90a290e393a796276c57faab974895887d6feef5 |
--- /dev/null |
+++ b/LayoutTests/inspector/json-balanced-tokenizer.html |
@@ -0,0 +1,102 @@ |
+<html> |
+<head> |
+<script src="../http/tests/inspector/inspector-test.js"></script> |
+ |
+<script> |
+function test() |
+{ |
+ InspectorTest.runTestSuite([ |
+ function testMatchQuotes(next) |
+ { |
+ var testStrings = [ |
+ {"odd back slashes with text around":"tes\\\"t"}, |
+ {"escaped double quotes":"\"test\""}, |
+ {"escaped back slash before double quote":"test\\"}, |
+ {1:2}, |
+ {"":""}, |
+ {"nested brackets":{}}, |
+ {"nested brackets with double quotes":{"":""}}, |
+ {"etc":{"\\":"\""}}, |
+ {"etc":{"\\\\":"\\"}}, |
+ {"etc":{"\\\\\"":"\\\\\""}} |
+ ]; |
+ |
+ for (var i = 0; i < testStrings.length; ++i) { |
+ var string = JSON.stringify(testStrings[i]); |
+ InspectorTest.addResult("\nParsing " + string); |
+ var tokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(InspectorTest.addResult.bind(InspectorTest)); |
+ tokenizer.write(string); |
+ } |
+ next(); |
+ }, |
+ |
+ function testMatchSequenceUsingOneShot(next) |
+ { |
+ var testData = [ |
+ {"one":"one"}, |
+ [{"one":"one"}, {"two":"two"}], |
+ [{"one":"one"}, {"two":"two"}, {"three":"three"}], |
+ ]; |
+ |
+ for (var i = 0; i < testData.length; ++i) { |
+ var string = JSON.stringify(testData[i]); |
+ InspectorTest.addResult("\nParsing " + string); |
+ var tokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(InspectorTest.addResult.bind(InspectorTest)); |
+ tokenizer.write(string); |
+ } |
+ next(); |
+ }, |
+ |
+ function testMatchSequenceUsingMultiple(next) |
+ { |
+ var testData = [ |
+ {"one":"one"}, |
+ [{"one":"one"}, {"two":"two"}], |
+ [{"one":"one"}, {"two":"two"}, {"three":"three"}], |
+ ]; |
+ |
+ for (var i = 0; i < testData.length; ++i) { |
+ var string = JSON.stringify(testData[i]); |
+ InspectorTest.addResult("\nParsing " + string); |
+ var tokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(InspectorTest.addResult.bind(InspectorTest), true); |
+ tokenizer.write(string); |
+ } |
+ next(); |
+ }, |
+ |
+ function testIncrementalWrites(next) |
+ { |
+ var testStrings = [ |
+ {"odd back slashes with text around":"tes\\\"t"}, |
+ {"escaped double quotes":"\"test\""}, |
+ {"escaped back slash before double quote":"test\\"}, |
+ {1:2}, |
+ {"":""}, |
+ {"nested brackets":{}}, |
+ {"nested brackets with double quotes":{"":""}}, |
+ {"etc":{"\\":"\""}}, |
+ {"etc":{"\\\\":"\\"}}, |
+ {"etc":{"\\\\\"":"\\\\\""}} |
+ ]; |
+ var string = JSON.stringify(testStrings); |
+ var tokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(InspectorTest.addResult.bind(InspectorTest), true); |
+ InspectorTest.addResult("\nRunning at once:"); |
+ tokenizer.write(string); |
+ |
+ for (var sample of [3, 15, 50]) { |
+ tokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(InspectorTest.addResult.bind(InspectorTest), true); |
+ InspectorTest.addResult("\nRunning by " + sample + ":"); |
+ for (var i = 0; i < string.length; i += sample) |
+ tokenizer.write(string.substring(i, i + sample)); |
+ } |
+ next(); |
+ } |
+ ]); |
+} |
+</script> |
+ |
+<body onload="runTest()"> |
+Test WebInspector.TextUtils.BalancedJSONTokenizer. |
+</p> |
+</body> |
+</html> |