gecko-dev/dom/console/tests/xpcshell/test_formatting.js

78 строки
1.5 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
add_task(async function() {
Assert.ok("console" in this);
const tests = [
// Plain value.
[[42], ["42"]],
// Integers.
[["%d", 42], ["42"]],
[["%i", 42], ["42"]],
[["c%iao", 42], ["c42ao"]],
// Floats.
[["%2.4f", 42], ["42.0000"]],
[["%2.2f", 42], ["42.00"]],
[["%1.2f", 42], ["42.00"]],
[["a%3.2fb", 42], ["a42.00b"]],
[["%f", NaN], ["NaN"]],
// Strings
[["%s", 42], ["42"]],
// Empty values.
[
["", 42],
["", "42"],
],
[
["", 42],
["", "42"],
],
];
let p = new Promise(resolve => {
let t = 0;
function consoleListener() {
addConsoleStorageListener(this);
}
consoleListener.prototype = {
observe(aSubject) {
let test = tests[t++];
let obj = aSubject.wrappedJSObject;
Assert.equal(
obj.arguments.length,
test[1].length,
"Same number of arguments"
);
for (let i = 0; i < test[1].length; ++i) {
Assert.equal(
"" + obj.arguments[i],
test[1][i],
"Message received: " + test[1][i]
);
}
if (t === tests.length) {
removeConsoleStorageListener(this);
resolve();
}
},
};
new consoleListener();
});
tests.forEach(test => {
console.log(...test[0]);
});
await p;
});