<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<div id="testParent" style="visibility:hidden"></div>
<script>
description('Various tests for the marquee element.');

var marquee;
var testParent = document.getElementById("testParent");

debug('"behavior" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" behavior="slide">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.behavior', '"slide"');

debug('"behavior" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" behavior="slide">test</marquee>';
marquee = document.getElementById('marquee');
marquee.behavior="alternate";
shouldBe('marquee.behavior', '"alternate"');

debug('"bgColor" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" bgcolor="red">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.bgColor', '"red"');

debug('"bgColor" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" bgcolor="red">test</marquee>';
marquee = document.getElementById('marquee');
marquee.bgColor="blue";
shouldBe('marquee.bgColor', '"blue"');

debug('"direction" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" direction="right">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.direction', '"right"');

debug('"direction" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" direction="right">test</marquee>';
marquee = document.getElementById('marquee');
marquee.direction="left";
shouldBe('marquee.direction', '"left"');

debug('"height" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" height="100px">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.height', '"100px"');

debug('"height" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" height="100px">test</marquee>';
marquee = document.getElementById('marquee');
marquee.height="200px";
shouldBe('marquee.height', '"200px"');

debug('"hspace" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" hspace="10">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.hspace', '10');

debug('"hspace" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" hspace="10">test</marquee>';
marquee = document.getElementById('marquee');
marquee.hspace=20;
shouldBe('marquee.hspace', '20');

debug('"hspace" IDL attribute is 0 when content attribute is negative:');
testParent.innerHTML = '<marquee id="marquee" hspace="-1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.hspace', '0');

debug('"hspace" IDL attribute is 0 when content attribute is too large:');
testParent.innerHTML = '<marquee id="marquee" hspace="2147483648">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.hspace', '0');

debug('"loop" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" loop="3">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '3');

debug('"loop" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" loop="3">test</marquee>';
marquee = document.getElementById('marquee');
marquee.loop=4;
shouldBe('marquee.loop', '4');

debug('"scrollAmount" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="5">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '5');

debug('"scrollAmount" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="5">test</marquee>';
marquee = document.getElementById('marquee');
marquee.scrollAmount=6;
shouldBe('marquee.scrollAmount', '6');

debug('"scrollDelay" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="50">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '50');

debug('"scrollDelay" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="50">test</marquee>';
marquee = document.getElementById('marquee');
marquee.scrollDelay=60;
shouldBe('marquee.scrollDelay', '60');

debug('"trueSpeed" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" truespeed="true">test</marquee>';
marquee = document.getElementById('marquee');
shouldBeTrue('marquee.trueSpeed');

debug('"trueSpeed" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" truespeed="true">test</marquee>';
marquee = document.getElementById('marquee');
marquee.trueSpeed=false;
shouldBe('marquee.trueSpeed', 'false');

debug('"vspace" IDL attribute reflects content attribute:');
testParent.innerHTML = '<marquee id="marquee" vspace="10">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.vspace', '10');

debug('"vspace" IDL attribute can be modified:');
testParent.innerHTML = '<marquee id="marquee" vspace="10">test</marquee>';
marquee = document.getElementById('marquee');
marquee.vspace=20;
shouldBe('marquee.vspace', '20');

debug('"vspace" IDL attribute is 0 when content attribute is negative:');
testParent.innerHTML = '<marquee id="marquee" vspace="-1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.vspace', '0');

debug('"vspace" IDL attribute is 0 when content attribute is too large:');
testParent.innerHTML = '<marquee id="marquee" vspace="2147483648">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.vspace', '0');

debug('Default "scrollAmount" value is 6:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '6');

debug('"scrollAmount" uses default value when content attribute is not a number:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="a1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '6');

debug('"scrollAmount" uses default value when content attribute is too large:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="2147483648">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '6');

debug('"scrollAmount" uses default value when content attribute is negative:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="-1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '6');

debug('"scrollAmount" can be set to 0:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="0">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '0');

debug('"scrollAmount" can be set to 2^31-1:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="2147483647">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '2147483647');

debug('"scrollAmount" can contain whitespace:');
testParent.innerHTML = '<marquee id="marquee" scrollamount=" 5 ">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '5');

debug('"scrollAmount" can contain trailing non-numeric values:');
testParent.innerHTML = '<marquee id="marquee" scrollamount="5a">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollAmount', '5');

debug('Setting "scrollAmount" to a negative value should set to the default value:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldNotThrow('marquee.scrollAmount = -1;');
shouldBe('marquee.scrollAmount', '6');

debug('Setting "scrollAmount" to a value that is too large should set to the default value:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldNotThrow('marquee.scrollAmount = 2147483648;');
shouldBe('marquee.scrollAmount', '6');

debug('Default "scrollDelay" value is 85:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '85');

debug('"scrollDelay" uses default value when content attribute is not a number:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="a1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '85');

debug('"scrollDelay" uses default value when content attribute is too large:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="2147483648">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '85');

debug('"scrollDelay" uses default value when content attribute is negative:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="-1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '85');

debug('"scrollDelay" can be set to 0:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="0">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '0');

debug('"scrollDelay" can be set to 2^31-1:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="2147483647">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '2147483647');

debug('"scrollDelay" can contain whitespace:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay=" 5 ">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '5');

debug('"scrollDelay" can contain trailing non-numeric values:');
testParent.innerHTML = '<marquee id="marquee" scrolldelay="5a">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.scrollDelay', '5');

debug('Setting "scrollDelay" to a negative value should set to the default value:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldNotThrow('marquee.scrollDelay = -1;');
shouldBe('marquee.scrollDelay', '85');

debug('Setting "scrollDelay" to a value that is too large should set to the default value:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldNotThrow('marquee.scrollDelay = 2147483648;');
shouldBe('marquee.scrollDelay', '85');

debug('Default "loop" value is -1:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '-1');

debug('"loop" uses default value when content attribute is not a number:');
testParent.innerHTML = '<marquee id="marquee" loop="a1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '-1');

debug('"loop" uses default value when content attribute is too large:');
testParent.innerHTML = '<marquee id="marquee" loop="2147483648">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '-1');

debug('"loop" uses default value when content attribute is negative:');
testParent.innerHTML = '<marquee id="marquee" loop="-5">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '-1');

debug('"loop" uses default value when set to 0:');
testParent.innerHTML = '<marquee id="marquee" loop="0">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '-1');

debug('"loop" can be set to 1:');
testParent.innerHTML = '<marquee id="marquee" loop="1">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '1');

debug('"loop" can be set to 2^31-1:');
testParent.innerHTML = '<marquee id="marquee" loop="2147483647">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '2147483647');

debug('"loop" can contain whitespace:');
testParent.innerHTML = '<marquee id="marquee" loop=" 5 ">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '5');

debug('"loop" can contain trailing non-numeric values:');
testParent.innerHTML = '<marquee id="marquee" loop="5a">test</marquee>';
marquee = document.getElementById('marquee');
shouldBe('marquee.loop', '5');

debug('Setting "loop" to 0 raises an exception:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
shouldThrow('document.getElementById("marquee").loop = 0;');

debug('Setting "loop" to a negative value raises an exception:');
testParent.innerHTML = '<marquee id="marquee">test</marquee>';
shouldThrow('document.getElementById("marquee").loop = -5;');

debug('"loop" can be set to -1 by script:');
testParent.innerHTML = '<marquee id="marquee" loop="5">test</marquee>';
marquee = document.getElementById('marquee');
marquee.loop = -1;
shouldBe('marquee.loop', '-1');
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
