| <!doctype html> |
| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function test() |
| { |
| let suite = InspectorTest.createAsyncSuite("Object"); |
| |
| suite.addTestCase({ |
| name: "WI.Object.prototype.dispatchEventToListeners", |
| description: "WI.Object shouldn't dispatch constructor-level events multiple times", |
| test(resolve, reject) { |
| class Parent extends WI.Object {} |
| class Child extends Parent {} |
| |
| const eventName = "clicked"; |
| let dispatchCount = 0; |
| |
| Parent.addEventListener(eventName, () => dispatchCount++); |
| |
| let child = new Child; |
| child.dispatchEventToListeners(eventName); |
| |
| InspectorTest.log("Dispatch count: " + dispatchCount); |
| |
| resolve(); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "WI.Object.prototype.awaitEvent", |
| description: "awaitEvent should only trigger once", |
| test(resolve, reject) { |
| const eventName = "test"; |
| let dispatchCount = 0; |
| |
| let object = new WI.Object; |
| |
| object.awaitEvent(eventName).then(() => { |
| dispatchCount++; |
| |
| InspectorTest.expectThat(dispatchCount === 1, "Await event handler should be dispatched just once."); |
| InspectorTest.log("Dispatch count: " + dispatchCount); |
| |
| // Resolve test on second event dispatch. |
| object.awaitEvent(eventName).then(() => { |
| resolve(); |
| }); |
| |
| object.dispatchEventToListeners(eventName); |
| }); |
| |
| object.dispatchEventToListeners(eventName); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p>Testing WI.Object.</p> |
| </body> |
| </html> |