test_formatting.js (1510B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 add_task(async function () { 5 Assert.ok("console" in this); 6 7 const tests = [ 8 // Plain value. 9 [[42], ["42"]], 10 11 // Integers. 12 [["%d", 42], ["42"]], 13 [["%i", 42], ["42"]], 14 [["c%iao", 42], ["c42ao"]], 15 16 // Floats. 17 [["%2.4f", 42], ["42.0000"]], 18 [["%2.2f", 42], ["42.00"]], 19 [["%1.2f", 42], ["42.00"]], 20 [["a%3.2fb", 42], ["a42.00b"]], 21 [["%f", NaN], ["NaN"]], 22 23 // Strings 24 [["%s", 42], ["42"]], 25 26 // Empty values. 27 [ 28 ["", 42], 29 ["", "42"], 30 ], 31 [ 32 ["", 42], 33 ["", "42"], 34 ], 35 ]; 36 37 let p = new Promise(resolve => { 38 let t = 0; 39 40 function consoleListener() { 41 addConsoleStorageListener(this); 42 } 43 44 consoleListener.prototype = { 45 observe(aSubject) { 46 let test = tests[t++]; 47 48 let obj = aSubject.wrappedJSObject; 49 Assert.equal( 50 obj.arguments.length, 51 test[1].length, 52 "Same number of arguments" 53 ); 54 for (let i = 0; i < test[1].length; ++i) { 55 Assert.equal( 56 "" + obj.arguments[i], 57 test[1][i], 58 "Message received: " + test[1][i] 59 ); 60 } 61 62 if (t === tests.length) { 63 removeConsoleStorageListener(this); 64 resolve(); 65 } 66 }, 67 }; 68 69 new consoleListener(); 70 }); 71 72 tests.forEach(test => { 73 console.log(...test[0]); 74 }); 75 76 await p; 77 });