This test makes sure that calling the window moving and resizing methods with less than 2 arguments treats the missing arguments as 0.

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 width
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 + x
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 + x
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 + x
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

