Source code
Revision control
Copy as Markdown
Other Tools
<svg id="svg-root" width="100%" height="100%"
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--======================================================================-->
template-version="1.4" reviewer="CM" author="ED" status="reviewed"
version="$Revision: 1.5 $" testname="$RCSfile: struct-svg-02-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#SVGElement">
<p>
Testing various interactions on the width attribute on an svg element.
The width attribute defaults to "100%" if it's not specified.
</p>
</d:testDescription>
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<p>
The test is passed if the testframe is filled with green, and there's no red.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: struct-svg-02-f.svg,v $</title>
<defs>
<font-face
font-family="SVGFreeSansASCII"
unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<script type="text/ecmascript" xlink:href="../resources/testharness.js"/>
<!-- The testroot is here only to get a predictable 480x360 viewport -->
<svg id="testroot" width="480" height="360">
<svg id="testSVG1" />
<svg id="testSVG2" />
<svg id="subSVG" width="300" height="175"/>
</svg>
<g id="testoutput"/>
<!-- Cover the whole testframe with a simple visual result -->
<rect id="status" width="100%" height="100%" fill="none"/>
<script type="text/javascript"><![CDATA[
var passes = 0;
var ypos = 50;
function verify(str, result)
{
var tc = document.createTextNode(str);
t.appendChild(tc);
t.setAttribute("class", "result");
t.setAttribute("font-family", "monospace");
t.setAttribute("font-size", "9px");
t.setAttribute("fill", "black");
t.setAttribute("x", "10");
t.setAttribute("y", "7");
r.setAttribute("y", "1");
r.setAttribute("width", "5");
r.setAttribute("height", "5");
g.setAttribute("class", result ? "passed" : "failed");
g.setAttribute("fill", result ? "lime" : "red");
g.appendChild(r);
g.appendChild(t);
g.setAttribute("transform", "translate(10 " + ypos + ")");
ypos += 10;
document.getElementById("testoutput").appendChild(g);
if (result)
passes++;
}
try
{
var testSVG = document.getElementById("testSVG1");
var subSVG = document.getElementById("subSVG");
var status = document.getElementById("status");
var base = testSVG.width.baseVal;
verify("value: " + base.value, base.value == 480);
test(function() {assert_equals(base.value, 480)}, "Assert that the width baseVal is 100% computed to user units.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 100);
test(function() {assert_equals(base.value, 100)}, "Assert that the default width baseVal is 100.");
// set the value in user units and then read it back
base.value = 240;
verify("value: " + base.value, base.value == 240);
test(function() {assert_equals(base.value, 240)}, "Assert that the width baseVal is 240 after setting it.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 50);
test(function() {assert_equals(base.valueInSpecifiedUnits, 50)}, "Assert that the value in specified units is now 50.");
// move the svg to be child of another viewport and read values again
subSVG.appendChild(testSVG);
verify("value: " + base.value, base.value == 150);
test(function() {assert_equals(base.value, 150)}, "Assert that the value changes to 150 after being moved to a new viewport.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 50);
test(function() {assert_equals(base.valueInSpecifiedUnits, 50)}, "Assert that the value in specified units is still 50 after being moved to a new viewport.");
// move an svg that hasn't been modified to another viewport and read values
testSVG = document.getElementById("testSVG2");
subSVG.appendChild(testSVG);
base = testSVG.width.baseVal;
verify("value: " + base.value, base.value == 300);
test(function() {assert_equals(base.value, 300)}, "Assert that the width baseVal is 300 user units after being moved to a new viewport.");
}
catch(ex)
{
}
status.setAttribute("fill", passes == 7 ? "lime" : "red");
test(function() {assert_equals(passes,7)}, "Assert that all subtests passed.");
]]></script>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.5 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
</svg>