This test makes sure that we don't allow calling the window moving and resizing methods with less than 2 arguments and that we do allow calling them with more.

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



window.resizeTo Tests

Testing - resizeTo with 0 arguments
PASS window.outerWidth is resetWidth
PASS window.outerHeight is resetHeight
Testing - resizeTo with 1 argument
PASS window.outerWidth is resetWidth
PASS window.outerHeight is resetHeight
Testing - resizeTo with more than 2 arguments
PASS window.outerWidth is width
PASS window.outerHeight is height

window.resizeBy Tests

Testing - resizeBy with 0 arguments
PASS window.outerWidth is resetWidth
PASS window.outerHeight is resetHeight
Testing - resizeBy with 1 argument
PASS window.outerWidth is resetWidth
PASS window.outerHeight is resetHeight
Testing - resizeBy with more than 2 arguments
PASS window.outerWidth is resetWidth + x
PASS window.outerHeight is resetHeight + y

window.moveTo Tests

Testing - moveTo with 0 arguments
PASS window.screenX is resetX
PASS window.screenY is resetY
Testing - moveTo with 1 argument
PASS window.screenX is resetX
PASS window.screenY is resetY
Testing - moveTo with more than 2 arguments
PASS window.screenX is x + screen.availLeft
PASS window.screenY is y + screen.availTop

window.moveBy Tests

Testing - moveBy with 0 arguments
PASS window.screenX is resetX
PASS window.screenY is resetY
Testing - moveBy with 1 argument
PASS window.screenX is resetX
PASS window.screenY is resetY
Testing - moveBy with more than 2 arguments
PASS window.screenX is resetX + x
PASS window.screenY is resetY + y
PASS successfullyParsed is true

TEST COMPLETE

