test_count.html (2650B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test for count/countReset in console</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <script src="head.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 9 </head> 10 <body> 11 <script type="application/javascript"> 12 13 SimpleTest.waitForExplicitFinish(); 14 15 function ConsoleListener() { 16 addConsoleStorageListener(this); 17 } 18 19 ConsoleListener.prototype = { 20 observe(aSubject) { 21 let obj = aSubject.wrappedJSObject; 22 if (obj.arguments[0] != "test") { 23 return; 24 } 25 26 if (!this._cb) { 27 ok(false, "Callback not set!"); 28 return; 29 } 30 31 if (!this._cb(obj)) { 32 return; 33 } 34 35 this._cb = null; 36 this._resolve(); 37 }, 38 39 shutdown() { 40 removeConsoleStorageListener(this); 41 }, 42 43 waitFor(cb) { 44 return new Promise(resolve => { 45 this._cb = SpecialPowers.wrapCallback(cb); 46 this._resolve = resolve; 47 }); 48 }, 49 }; 50 51 let listener = new ConsoleListener(); 52 53 async function runTest() { 54 // First count. 55 let cl = listener.waitFor(obj => { 56 return ("counter" in obj) && 57 ("label" in obj.counter) && 58 obj.counter.label == "test" && 59 obj.counter.count == 1; 60 }); 61 console.count("test"); 62 await cl; 63 ok(true, "Console.count == 1 received!"); 64 65 // Second count. 66 cl = listener.waitFor(obj => { 67 return ("counter" in obj) && 68 ("label" in obj.counter) && 69 obj.counter.label == "test" && 70 obj.counter.count == 2; 71 }); 72 console.count("test"); 73 await cl; 74 ok(true, "Console.count == 2 received!"); 75 76 // Counter reset. 77 cl = listener.waitFor(obj => { 78 return ("counter" in obj) && 79 ("label" in obj.counter) && 80 obj.counter.label == "test" && 81 obj.counter.count == 0; 82 }); 83 console.countReset("test"); 84 await cl; 85 ok(true, "Console.countReset == 0 received!"); 86 87 // Counter reset with error. 88 cl = listener.waitFor(obj => { 89 return ("counter" in obj) && 90 ("label" in obj.counter) && 91 obj.counter.label == "test" && 92 obj.counter.error == "counterDoesntExist"; 93 }); 94 console.countReset("test"); 95 await cl; 96 ok(true, "Console.countReset with error received!"); 97 98 // First again! 99 cl = listener.waitFor(obj => { 100 return ("counter" in obj) && 101 ("label" in obj.counter) && 102 obj.counter.label == "test" && 103 obj.counter.count == 1; 104 }); 105 console.count("test"); 106 await cl; 107 ok(true, "Console.count == 1 received!"); 108 } 109 110 runTest().then(() => { 111 listener.shutdown(); 112 SimpleTest.finish(); 113 }); 114 115 </script> 116 </body> 117 </html>