233 lines
11 KiB
HTML
233 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function sleepTick() {
|
|
let now = performance.now();
|
|
let until = now + 10;
|
|
while (performance.now() < until);
|
|
}
|
|
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("console.time");
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.DefaultLabel",
|
|
description: "Test that default label works as expected.",
|
|
test(resolve, reject) {
|
|
let seen = 0;
|
|
const expected = 6;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere.");
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time()`);
|
|
InspectorTest.evaluateInPage(`console.timeLog()`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd()`);
|
|
|
|
InspectorTest.evaluateInPage(`console.time(undefined)`);
|
|
InspectorTest.evaluateInPage(`console.timeLog('default')`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd('default')`);
|
|
|
|
InspectorTest.evaluateInPage(`console.time('default')`);
|
|
InspectorTest.evaluateInPage(`console.timeLog(undefined)`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd(undefined)`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.UserLabels",
|
|
description: "Test that user labels works as expected.",
|
|
test(resolve, reject) {
|
|
let seen = 0;
|
|
const expected = 2;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.expectThat(message.messageText.includes("my-label"), "Message should contain the 'my-label' label name somewhere.");
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time('my-label')`);
|
|
InspectorTest.evaluateInPage(`console.timeLog('my-label')`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd('my-label')`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.MultipleTimers",
|
|
description: "Test that multiple timers running at the same time work as expected.",
|
|
test(resolve, reject) {
|
|
let seen = 0;
|
|
const expected = 2;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
let expectedLabel = seen === 0 ? "my-label-2" : "my-label-1";
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.expectThat(message.messageText.includes(expectedLabel), "Message should contain the '" + expectedLabel + "' label name somewhere.");
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time('my-label-1')`);
|
|
InspectorTest.evaluateInPage(`console.time('my-label-2')`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd('my-label-2')`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd('my-label-1')`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.WarnWhenExisting",
|
|
description: "Test for a warning when trying to start an already started timer.",
|
|
test(resolve, reject) {
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
if (message.level === WI.ConsoleMessage.MessageLevel.Warning) {
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.pass("Should receive a Warning level message");
|
|
InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere.");
|
|
return;
|
|
}
|
|
if (message.type === WI.ConsoleMessage.MessageType.Timing) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time()`);
|
|
InspectorTest.evaluateInPage(`console.time()`); // Warning
|
|
InspectorTest.evaluateInPage(`console.timeEnd()`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.WarnWhenNotExisting",
|
|
description: "Test for a warning when trying to start an already started timer.",
|
|
test(resolve, reject) {
|
|
let seen = 0;
|
|
const expected = 2;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
if (message.type === WI.ConsoleMessage.MessageType.Clear)
|
|
return;
|
|
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.expectThat(message.level === WI.ConsoleMessage.MessageLevel.Warning, "Should receive a Warning level message.");
|
|
InspectorTest.expectThat(message.messageText.includes("default"), "Message should contain the 'default' label name somewhere.");
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.timeLog()`); // Warn
|
|
InspectorTest.evaluateInPage(`console.clear()`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd()`); // Warn
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.TimeLogIncreasing",
|
|
description: "Test for timeLog multiple times with a timer should increase.",
|
|
test(resolve, reject) {
|
|
let lastTime = 0;
|
|
let seen = 0;
|
|
const expected = 4;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
InspectorTest.expectThat(message.messageText.includes("my-timelog-label"), "Message should contain the 'my-timelog-label' label name somewhere.");
|
|
|
|
let match = message.messageText.match(/^my-timelog-label: (\d+(\.\d+)?ms)/)
|
|
if (match) {
|
|
let currentTime = parseFloat(match[1]);
|
|
if (lastTime) {
|
|
InspectorTest.assert(currentTime > 15, "At least 15 milliseconds should have elapsed since this is for timeLog 2 and later.");
|
|
InspectorTest.expectGreaterThan(currentTime, lastTime, "+ Timer time should be increasing.");
|
|
} else
|
|
InspectorTest.pass("+ Initial timer time seen.");
|
|
lastTime = currentTime;
|
|
}
|
|
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time("my-timelog-label")`);
|
|
InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`);
|
|
InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`);
|
|
InspectorTest.evaluateInPage(`sleepTick(); console.timeLog("my-timelog-label")`);
|
|
InspectorTest.evaluateInPage(`sleepTick(); console.timeEnd("my-timelog-label")`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "console.time.TimeLogArguments",
|
|
description: "Test for timeLog with trailing parameters.",
|
|
test(resolve, reject) {
|
|
let seen = 0;
|
|
const expected = 4;
|
|
WI.consoleManager.addEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
function handler(event) {
|
|
let message = event.data.message;
|
|
InspectorTest.expectThat(message.type === WI.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
|
|
|
|
switch (seen) {
|
|
case 0:
|
|
InspectorTest.expectEqual(message.parameters, undefined, "timeLog should contain no parameters");
|
|
break;
|
|
case 1:
|
|
InspectorTest.expectEqual(message.parameters.length, 1, "timeLog should contain 1 parameters");
|
|
break;
|
|
case 2:
|
|
InspectorTest.expectEqual(message.parameters.length, 2, "timeLog should contain 2 parameters");
|
|
break;
|
|
case 3:
|
|
InspectorTest.expectEqual(message.parameters, undefined, "timeEnd should contain no parameters");
|
|
break;
|
|
}
|
|
|
|
if (++seen === expected) {
|
|
WI.consoleManager.removeEventListener(WI.ConsoleManager.Event.MessageAdded, handler);
|
|
resolve();
|
|
}
|
|
}
|
|
|
|
InspectorTest.evaluateInPage(`console.time("x")`);
|
|
InspectorTest.evaluateInPage(`console.timeLog("x")`);
|
|
InspectorTest.evaluateInPage(`console.timeLog("x", 1)`);
|
|
InspectorTest.evaluateInPage(`console.timeLog("x", 2, window)`);
|
|
InspectorTest.evaluateInPage(`console.timeEnd("x")`);
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Tests for the console.time, console.timeLog, and console.timeEnd APIs.</p>
|
|
</body>
|
|
</html>
|