| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | |
| <html> | |
| <head> | |
| <script src="../../fast/js/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 raises an exception:'); | |
| testParent.innerHTML = '<marquee id="marquee">test</marquee>'; | |
| shouldThrow('document.getElementById("marquee").scrollAmount = -1;'); | |
| debug('Setting "scrollAmount" to a value that is too large raises an exception:'); | |
| testParent.innerHTML = '<marquee id="marquee">test</marquee>'; | |
| shouldThrow('document.getElementById("marquee").scrollAmount = 2147483648;'); | |
| 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 raises an exception:'); | |
| testParent.innerHTML = '<marquee id="marquee">test</marquee>'; | |
| shouldThrow('document.getElementById("marquee").scrollDelay = -1;'); | |
| debug('Setting "scrollDelay" to a value that is too large raises an exception:'); | |
| testParent.innerHTML = '<marquee id="marquee">test</marquee>'; | |
| shouldThrow('document.getElementById("marquee").scrollDelay = 2147483648;'); | |
| 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").scrollDelay = -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="../../fast/js/resources/js-test-post.js"></script> | |
| </body> | |
| </html> |