310 lines
13 KiB
HTML
310 lines
13 KiB
HTML
<!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>
|