<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<div style="height: 1000px; width: 1000px; border: 1px solid black;">This box should force the window to have a scrollable area to test.</div>
<script language="JavaScript" type="text/javascript">
var resetX;
var resetY;
var x = 25;
var y = 50;
function reset()
{
window.scrollTo(0,0);
resetX = window.scrollX;
resetY = window.scrollY;
}
if (window.testRunner)
testRunner.dumpAsText();
reset();
description("This test makes sure that calling the window scrolling\
methods with a single non-dictionary argument or with a dictionary \
whose 'behavior' field is invalid throws an exception.");
// scrollTo /////////////////////////
debug('');
debug('window.scrollTo Tests');
debug('');
debug("Testing - scrollTo with 0 arguments");
shouldNotThrow('window.scrollTo()');
reset();
debug("Testing - scrollTo with 1 non-dictionary argument");
shouldThrow('window.scrollTo(x)');;
reset();
debug("Testing - scrollTo with a valid ScrollToOptions argument");
shouldNotThrow('window.scrollTo({ })');
shouldNotThrow('window.scrollTo({ left: x })');
shouldNotThrow('window.scrollTo({ top: y })');
shouldNotThrow('window.scrollTo({ behavior: "auto" })');
shouldNotThrow('window.scrollTo({ behavior: "instant" })');
shouldNotThrow('window.scrollTo({ behavior: "smooth" })');
shouldNotThrow('window.scrollTo({ left: x, top: y })');
shouldNotThrow('window.scrollTo({ left: x, top: y, behavior: "auto" })');
shouldNotThrow('window.scrollTo({ left: x, top: y, behavior: "instant" })');
shouldNotThrow('window.scrollTo({ left: x, top: y, behavior: "smooth" })');
debug("Testing - scrollTo with an invalid ScrollToOptions argument");
shouldThrow('window.scrollTo({ behavior: "" })');
shouldThrow('window.scrollTo({ left: x, top: y, behavior: "abcd" })');
shouldThrow('window.scrollTo({ left: x, top: y, behavior: 200 })');
// scroll /////////////////////////
debug('');
debug('window.scroll Tests');
debug('');
debug("Testing - scroll with 0 arguments");
shouldNotThrow('window.scroll()');;
reset();
debug("Testing - scroll with 1 argument");
shouldThrow('window.scroll(x)');
reset();
debug("Testing - scroll with a valid ScrollToOptions argument");
shouldNotThrow('window.scroll({ })');
shouldNotThrow('window.scroll({ left: x })');
shouldNotThrow('window.scroll({ top: y })');
shouldNotThrow('window.scroll({ behavior: "auto" })');
shouldNotThrow('window.scroll({ behavior: "instant" })');
shouldNotThrow('window.scroll({ behavior: "smooth" })');
shouldNotThrow('window.scroll({ left: x, top: y })');
shouldNotThrow('window.scroll({ left: x, top: y, behavior: "auto" })');
shouldNotThrow('window.scroll({ left: x, top: y, behavior: "instant" })');
shouldNotThrow('window.scroll({ left: x, top: y, behavior: "smooth" })');
debug("Testing - scroll with an invalid ScrollToOptions argument");
shouldThrow('window.scroll({ behavior: "" })');
shouldThrow('window.scroll({ left: x, top: y, behavior: "abcd" })');
shouldThrow('window.scroll({ left: x, top: y, behavior: 200 })');
// scrollBy /////////////////////////
debug('');
debug('window.scrollBy Tests');
debug('');
debug("Testing - scrollBy with 0 arguments");
shouldNotThrow('window.scrollBy()');;
reset();
debug("Testing - scrollBy with 1 argument");
shouldThrow('window.scrollBy(x)');
reset();
debug("Testing - scrollBy with a valid ScrollOptions argument");
shouldNotThrow('window.scrollBy({ })');
shouldNotThrow('window.scrollBy({ left: x })');
shouldNotThrow('window.scrollBy({ top: y })');
shouldNotThrow('window.scrollBy({ behavior: "auto" })');
shouldNotThrow('window.scrollBy({ behavior: "instant" })');
shouldNotThrow('window.scrollBy({ behavior: "smooth" })');
shouldNotThrow('window.scrollBy({ left: x, top: y })');
shouldNotThrow('window.scrollBy({ left: x, top: y, behavior: "auto" })');
shouldNotThrow('window.scrollBy({ left: x, top: y, behavior: "instant" })');
shouldNotThrow('window.scrollBy({ left: x, top: y, behavior: "smooth" })');
debug("Testing - scrollBy with an invalid ScrollOptions argument");
shouldThrow('window.scrollBy({ behavior: "" })');
shouldThrow('window.scrollBy({ left: x, top: y, behavior: "abcd" })');
shouldThrow('window.scrollBy({ left: x, top: y, behavior: 200 })');
</script>
</body>
</html>