This test makes sure that we cannot set the parameter of a window to NaN, causing unpredicable results

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



window.resizeTo Tests

Testing - resizeTo: Bad width input
PASS window.outerWidth is defaultSize
PASS window.outerHeight is defaultSize

Testing - resizeTo: Bad height input
PASS window.outerWidth is defaultSize
PASS window.outerHeight is defaultSize

Testing - resizeTo: Bad width and height input
PASS window.outerWidth is defaultSize
PASS window.outerHeight is defaultSize

window.resizeBy Tests

Testing - resizeBy: Bad width input
PASS window.outerWidth is defaultSize
PASS window.outerHeight is defaultSize + y

Testing - resizeBy: Bad height input
PASS window.outerWidth is defaultSize + x
PASS window.outerHeight is defaultSize

window.moveTo Tests

Testing - moveTo: Bad x input
PASS window.screenY is y + (screen.availTop * 2)
PASS window.screenX is screen.availLeft

Testing - moveTo: Bad y input
PASS window.screenY is screen.availTop * 2
PASS window.screenX is x

Testing - moveTo: Bad x and y input
PASS window.screenY is screen.availTop * 2
PASS window.screenX is screen.availLeft

window.moveBy Tests

Testing - moveBy: Bad x input
PASS window.screenY is (screen.availTop * 4) + y
PASS window.screenX is screen.availLeft

Testing - moveBy: Bad y input
PASS window.screenY is screen.availTop * 4
PASS window.screenX is screen.availLeft + x

Testing - moveBy: Bad x and y input
PASS window.screenY is screen.availTop * 4
PASS window.screenX is screen.availLeft
PASS successfullyParsed is true

TEST COMPLETE

