89 lines
4.1 KiB
HTML
89 lines
4.1 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
window.cyclicObject = {};
|
|
window.cyclicObject["cycle"] = window.cyclicObject;
|
|
|
|
function pasteAndReturnString() {
|
|
let textarea = document.getElementById("textarea");
|
|
textarea.value = "";
|
|
textarea.focus();
|
|
document.execCommand("Paste");
|
|
return textarea.value;
|
|
}
|
|
|
|
function test()
|
|
{
|
|
function stringify(value) {
|
|
return JSON.stringify(value, null, " ");
|
|
}
|
|
|
|
function commandLineAPICopyAndPaste(expression, callback) {
|
|
InspectorTest.assert(typeof expression === "string", "Test requires string expression to evaluate on the page.");
|
|
WI.runtimeManager.evaluateInInspectedWindow(`copy(${expression})`, {objectGroup: "test", includeCommandLineAPI: true}, () => {
|
|
InspectorTest.evaluateInPage(`pasteAndReturnString()`, (error, result) => {
|
|
InspectorTest.assert(typeof result === "string", "Result from pasteAndReturnString should be a string.")
|
|
callback(result);
|
|
});
|
|
});
|
|
}
|
|
|
|
let suite = InspectorTest.createAsyncSuite("Console.CommandLineAPI.Copy");
|
|
|
|
let expressions = [
|
|
// Primitives
|
|
{ name: "Primitive.Boolean", expression: "true", expected: "true" },
|
|
{ name: "Primitive.Number", expression: "1", expected: "1" },
|
|
{ name: "Primitive.Number", expression: "123", expected: "123" },
|
|
{ name: "Primitive.Number", expression: "123.456", expected: "123.456" },
|
|
{ name: "Primitive.Number", expression: "-1e3", expected: "-1000" },
|
|
{ name: "Primitive.String", expression: "'string'", expected: "string" },
|
|
{ name: "Primitive.UnicodeString", expression: "'Unicode…'", expected: "Unicode…" },
|
|
{ name: "Primitive.Undefined", expression: "undefined", expected: "undefined" },
|
|
{ name: "Primitive.OtherNumbers", expression: "Math.PI", expected: "3.141592653589793" },
|
|
{ name: "Primitive.OtherNumbers", expression: "NaN", expected: "NaN" },
|
|
{ name: "Primitive.OtherNumbers", expression: "-Infinity", expected: "-Infinity" },
|
|
|
|
// Other Types
|
|
{ name: "Null", expression: "null", expected: "null" },
|
|
{ name: "Regex", expression: "/regex/i", expected: "/regex/i" },
|
|
{ name: "Symbol", expression: "Symbol('test')", expected: "Symbol(test)" },
|
|
{ name: "Function", expression: "function foo( a, b ) {return 1}", expected: "function foo( a, b ) {return 1}" },
|
|
{ name: "Array", expression: "[1,2,3]", expected: stringify([1,2,3]) },
|
|
{ name: "Object", expression: "{x:1, y:2}", expected: stringify({x:1, y:2}) },
|
|
{ name: "Object.Cyclic", expression: "window.cyclicObject", expected: "[object Object]" },
|
|
{ name: "Node", expression: "document.getElementById('target')", expected: '<div id="target" style="display:none"><p>Test</p></div>' },
|
|
];
|
|
|
|
for (let {name, expression, expected} of expressions) {
|
|
suite.addTestCase({
|
|
name: `Console.CommandLineAPI.Copy.${name}`,
|
|
description: "Should be able to copy values.",
|
|
test(resolve, reject) {
|
|
InspectorTest.log(`TEST: copy(${expression})`);
|
|
commandLineAPICopyAndPaste(expression, (result) => {
|
|
if (result !== expected) {
|
|
InspectorTest.log("CLIPBOARD: " + result);
|
|
InspectorTest.log("EXPECTED: " + expected);
|
|
}
|
|
InspectorTest.expectThat(result === expected, "Pasted value should be as expected.");
|
|
resolve();
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest();">
|
|
<p>Tests for the `copy` function in the Command Line API.</p>
|
|
<textarea id="textarea"></textarea>
|
|
<div id="target" style="display:none"><p>Test</p></div>
|
|
</body>
|
|
</html>
|