111 lines
4.0 KiB
HTML
111 lines
4.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
function ensureJSON(string, expectation) {
|
|
let invalid = false;
|
|
try {
|
|
JSON.parse(string);
|
|
} catch (e) {
|
|
invalid = true;
|
|
}
|
|
if (expectation === "invalid")
|
|
InspectorTest.expectThat(invalid, "JSON should be invalid.");
|
|
else
|
|
InspectorTest.expectThat(!invalid, "JSON should be valid.");
|
|
}
|
|
|
|
function ensureEval(string, expectation) {
|
|
let isObject = false;
|
|
try {
|
|
let result = eval("(" + string + ")");
|
|
isObject = typeof result === "object";
|
|
} catch (e) {}
|
|
|
|
if (expectation === "object")
|
|
InspectorTest.expectThat(isObject, "Should be able to be evaluated to an object.");
|
|
else
|
|
InspectorTest.expectThat(!isObject, "Should not be able to be evaluated to an object.");
|
|
}
|
|
|
|
|
|
let suite = InspectorTest.createAsyncSuite("JSFormatter.JSON");
|
|
|
|
const isModule = false;
|
|
const indentString = " ";
|
|
let workerProxy = WI.FormatterWorkerProxy.singleton();
|
|
|
|
suite.addTestCase({
|
|
name: "JSFormatter.ValidJSON",
|
|
description: "Format valid JSON",
|
|
test(resolve, reject) {
|
|
let validJSON = JSON.stringify({"a":123,"b":[1,2,3],"c":{"d":"e"}});
|
|
InspectorTest.log("JSON: " + doubleQuotedString(validJSON));
|
|
ensureJSON(validJSON, "valid");
|
|
workerProxy.formatJavaScript(validJSON, isModule, indentString, ({formattedText, sourceMapData}) => {
|
|
InspectorTest.log("FORMATTED:");
|
|
InspectorTest.log(formattedText);
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "JSFormatter.InvalidButObject",
|
|
description: "Format invalid JSON due to literal keys, but it can be evaluated as a valid JavaScript Object",
|
|
test(resolve, reject) {
|
|
let invalidJSON = `{a:123,b:[1,2,3],c:{d:"e"}}`;
|
|
InspectorTest.log("JSON: " + doubleQuotedString(invalidJSON));
|
|
ensureJSON(invalidJSON, "invalid");
|
|
ensureEval(invalidJSON, "object");
|
|
workerProxy.formatJavaScript(invalidJSON, isModule, indentString, ({formattedText, sourceMapData}) => {
|
|
InspectorTest.log("FORMATTED:");
|
|
InspectorTest.log(formattedText);
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "JSFormatter.InvalidWithComments",
|
|
description: "Format invalid JSON due to comments, but it can be evaluated as a valid JavaScript Object",
|
|
test(resolve, reject) {
|
|
let invalidJSON = JSON.stringify({"a":123,"b":[1,2,3],"c":{"d":"e"}}) + "/*Comment*/";
|
|
InspectorTest.log("JSON: " + doubleQuotedString(invalidJSON));
|
|
ensureJSON(invalidJSON, "invalid");
|
|
ensureEval(invalidJSON, "object");
|
|
workerProxy.formatJavaScript(invalidJSON, isModule, indentString, ({formattedText, sourceMapData}) => {
|
|
InspectorTest.log("FORMATTED:");
|
|
InspectorTest.log(formattedText);
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "JSFormatter.Invalid",
|
|
description: "Format invalid JSON, that is not a valid JavaScript Object",
|
|
test(resolve, reject) {
|
|
let invalid = `{a:1 b:2}`;
|
|
InspectorTest.log("INPUT: " + doubleQuotedString(invalid));
|
|
ensureJSON(invalid, "invalid");
|
|
ensureEval(invalid, "bad");
|
|
workerProxy.formatJavaScript(invalid, isModule, indentString, ({formattedText, sourceMapData}) => {
|
|
InspectorTest.expectThat(formattedText === null, "Response should be null.");
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Test JSON formatting.</p>
|
|
</body>
|
|
</html>
|