1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
<!DOCTYPE html>
<html lang='en'>
<head>
<title>struct-svg-02-f-manual.svg</title>
<meta charset='utf-8'>
</head>
<body>
<h1>Source SVG: struct-svg-02-f-manual.svg</h1>
<svg id="svg-root" width="100%" height="100%"
viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<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><![CDATA[
var passes = 0;
var ypos = 50;
function verify(str, result)
{
var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var t = document.createElementNS("http://www.w3.org/2000/svg", "text");
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>
</body>
</html>
|