100 lines
2.9 KiB
HTML
100 lines
2.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
shouldBeEqualToString("typeof console", "object");
|
|
shouldBeEqualToString("console.toString()", "[object console]");
|
|
shouldBe("console", "console");
|
|
|
|
// <https://webkit.org/b/157782> console namespace breaks putting properties on console.__proto__
|
|
shouldNotBe("Object.getPrototypeOf(console)", "Object.getPrototypeOf({})");
|
|
|
|
var consoleDescriptor = Object.getOwnPropertyDescriptor(window, "console");
|
|
shouldBeTrue('consoleDescriptor.configurable');
|
|
shouldBeTrue('consoleDescriptor.writable');
|
|
shouldBeFalse('consoleDescriptor.enumerable');
|
|
|
|
// Console methods don't care what their this object is.
|
|
console.log("log message");
|
|
console.log.call(null, "log message");
|
|
console.log.call(undefined, "log message");
|
|
console.log.call(console, "log message");
|
|
console.log.call(123, "log message");
|
|
console.log.call("ignore", "log message");
|
|
console.log.bind(console, "log message");
|
|
console.log.bind(console)("log message");
|
|
[1,2,3].forEach(console.log);
|
|
|
|
// All properties should be enumerable.
|
|
var property, descriptor;
|
|
var enumerablePropertyCount = 0;
|
|
for (property in console) {
|
|
enumerablePropertyCount++;
|
|
descriptor = Object.getOwnPropertyDescriptor(console, property);
|
|
|
|
debug("");
|
|
debug(`console.${property}`);
|
|
shouldBeEqualToString(`typeof console.${property}`, "function");
|
|
shouldBe(`console.${property}.length`, '0');
|
|
shouldBeTrue('descriptor.configurable');
|
|
shouldBeTrue('descriptor.writable');
|
|
shouldBeTrue('descriptor.enumerable');
|
|
}
|
|
|
|
debug("");
|
|
shouldBe("Object.getOwnPropertyNames(console).length", "enumerablePropertyCount");
|
|
|
|
const fuzzingArguments = [
|
|
`undefined`,
|
|
`null`,
|
|
`1`,
|
|
`"test"`,
|
|
`[]`,
|
|
`{}`,
|
|
`window`,
|
|
`console`,
|
|
];
|
|
|
|
debug("");
|
|
debug("fuzzing of target for console.record");
|
|
shouldNotThrow(`console.record()`);
|
|
for (let argument of fuzzingArguments)
|
|
shouldNotThrow(`console.record(${argument})`);
|
|
|
|
debug("");
|
|
debug("fuzzing of options for console.record");
|
|
for (let argument of fuzzingArguments)
|
|
shouldNotThrow(`console.record({}, ${argument})`);
|
|
|
|
debug("");
|
|
debug("fuzzing of target for console.recordEnd");
|
|
shouldNotThrow(`console.recordEnd()`);
|
|
for (let argument of fuzzingArguments)
|
|
shouldNotThrow(`console.recordEnd(${argument})`);
|
|
|
|
debug("");
|
|
debug("ensure multiple calls don't throw");
|
|
shouldNotThrow(`console.recordEnd(window.canvas)`);
|
|
shouldNotThrow(`console.recordEnd(window.canvas)`);
|
|
shouldNotThrow(`console.recordEnd(window.canvas)`);
|
|
shouldNotThrow(`console.record(window.canvas)`);
|
|
shouldNotThrow(`console.record(window.canvas)`);
|
|
shouldNotThrow(`console.record(window.canvas)`);
|
|
|
|
debug("");
|
|
debug("fuzzing of target for console.screenshot");
|
|
shouldNotThrow(`console.screenshot()`);
|
|
for (let argument of fuzzingArguments)
|
|
shouldNotThrow(`console.screenshot(${argument})`);
|
|
|
|
debug("");
|
|
|
|
</script>
|
|
<script src="../resources/js-test-post.js"></script>
|
|
<canvas id="canvas"></canvas>
|
|
</body>
|
|
</html>
|