| // NOTE: You must include resources/js-test.js before this file in a test case since |
| // this file makes use of functions in js-test.js. |
| |
| var replayEventQueue = []; // Global queue of recorded events. |
| var registeredElementsAndEventsStruct; // Global structure of registered elements and events. |
| |
| function registerElementsAndEventsToRecord(elementsToRecord, eventsToRecord) |
| { |
| registeredElementsAndEventsStruct = {"elementsToRecord": elementsToRecord, "eventsToRecord": eventsToRecord}; |
| } |
| |
| function beginRecordingEvents() |
| { |
| function callback(element, eventName) |
| { |
| element.addEventListener(eventName, _recordEvent, false); |
| } |
| _processEachRegisteredElement(callback); |
| } |
| |
| function endRecordingEvents() |
| { |
| function callback(element, eventName) |
| { |
| element.removeEventListener(eventName, _recordEvent, false); |
| } |
| _processEachRegisteredElement(callback); |
| } |
| |
| function _processEachRegisteredElement(callback) |
| { |
| if (!registeredElementsAndEventsStruct) |
| return; |
| var elements = registeredElementsAndEventsStruct.elementsToRecord; |
| var events = registeredElementsAndEventsStruct.eventsToRecord; |
| for (var i = 0; i < elements.length; ++i) { |
| for (var j = 0; j < events.length; ++j) |
| callback(elements[i], events[j]) |
| } |
| } |
| |
| function _recordEvent(event) |
| { |
| replayEventQueue.push([event, event.currentTarget.id]); |
| } |
| |
| function checkThatEventsFiredInOrder(expectedOrderQueue) |
| { |
| while (replayEventQueue.length && expectedOrderQueue.length) { |
| var replayedEvent = replayEventQueue.shift(); |
| var expectedEvent = expectedOrderQueue.shift(); |
| var replayedEventTargetName = replayedEvent[1]; |
| if (replayedEventTargetName === expectedEvent[0] && replayedEvent[0].type === expectedEvent[1]) |
| testPassed('fired event is (' + replayedEventTargetName + ', ' + replayedEvent[0].type + ').'); |
| else { |
| testFailed('fired event is (' + replayedEventTargetName + ', ' + replayedEvent[0].type + '). ' + |
| 'Should be (' + expectedEvent[0] + ', ' + expectedEvent[1] + ').'); |
| } |
| } |
| while (replayEventQueue.length) { |
| var replayedEvent = replayEventQueue.shift(); |
| testFailed('should not have fired event (' + replayedEvent[1] + ', ' + replayedEvent[0].type + '). But did.'); |
| } |
| while (expectedOrderQueue.length) { |
| var expectedEvent = expectedOrderQueue.shift(); |
| testFailed('should have fired event (' + expectedEvent[0] + ', ' + expectedEvent[1] + '). But did not.'); |
| } |
| } |