This tests that the Event classes have constructors.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS event instanceof window.Event is true
PASS event.constructor === window.Event is true
PASS uiEvent instanceof window.UIEvent is true
PASS uiEvent instanceof window.Event is true
PASS uiEvent.constructor === window.UIEvent is true
PASS keyboardEvent instanceof window.KeyboardEvent is true
PASS keyboardEvent instanceof window.UIEvent is true
PASS keyboardEvent instanceof window.Event is true
PASS keyboardEvent.constructor === window.KeyboardEvent is true
PASS mouseEvent instanceof window.MouseEvent is true
PASS mouseEvent instanceof window.UIEvent is true
PASS mouseEvent instanceof window.Event is true
PASS mouseEvent.constructor === window.MouseEvent is true
PASS wheelEvent instanceof window.WheelEvent is true
PASS wheelEvent instanceof window.UIEvent is true
PASS wheelEvent instanceof window.Event is true
PASS wheelEvent.constructor === window.WheelEvent is true
PASS mutationEvent instanceof window.MutationEvent is true
PASS mutationEvent instanceof window.Event is true
PASS mutationEvent.constructor === window.MutationEvent is true
PASS overflowEvent instanceof window.OverflowEvent is true
PASS overflowEvent instanceof window.Event is true
PASS overflowEvent.constructor === window.OverflowEvent is true
PASS progressEvent instanceof window.ProgressEvent is true
PASS progressEvent instanceof window.Event is true
PASS progressEvent.constructor === window.ProgressEvent is true
PASS textEvent instanceof window.TextEvent is true
PASS textEvent instanceof window.Event is true
PASS textEvent.constructor === window.TextEvent is true
PASS successfullyParsed is true

TEST COMPLETE

