1 <svg id=
"svg-root" width=
"100%" height=
"100%"
2 viewBox=
"0 0 480 360" xmlns=
"http://www.w3.org/2000/svg"
3 xmlns:
xlink=
"http://www.w3.org/1999/xlink" onload=
"test()">
4 <!--======================================================================-->
5 <!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
6 <!--= Institute of Technology, European Research Consortium for =-->
7 <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
8 <!--= All Rights Reserved. =-->
9 <!--= See http://www.w3.org/Consortium/Legal/. =-->
10 <!--======================================================================-->
11 <d:SVGTestCase xmlns:
d=
"http://www.w3.org/2000/02/svg/testsuite/description/"
12 template-version=
"1.4" reviewer=
"CL" author=
"ED" status=
"accepted"
13 version=
"$Revision: 1.5 $" testname=
"$RCSfile: coords-dom-04-f.svg,v $">
14 <d:testDescription xmlns=
"http://www.w3.org/1999/xhtml" href=
"http://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransformList">
16 The test checks the SVGTransformList.consolidate method.
19 <d:operatorScript xmlns=
"http://www.w3.org/1999/xhtml">
21 Run the test. No interaction required.
24 <d:passCriteria xmlns=
"http://www.w3.org/1999/xhtml">
26 There must be
13 green rectangles visible.
27 The text next to the first rectangle must say
"Scripting enabled".
28 The other
12 lines must each say
"Passed subtest #n" where n is the subtest number
1.
.12.
29 If anything red shows, the test has failed.
33 <title id=
"test-title">$RCSfile: coords-dom-
04-f.svg,v $
</title>
36 font-family=
"SVGFreeSansASCII"
37 unicode-range=
"U+0-7F">
39 <font-face-uri xlink:
href=
"../custom/resources/SVGFreeSans.svg#ascii"/>
43 <g id=
"test-body-content" font-family=
"SVGFreeSansASCII,sans-serif" font-size=
"18">
46 #test-body-content rect { stroke: black; }
48 <script type=
"text/ecmascript"><![CDATA[
49 var pos = {
"x":
20,
"y":
40 };
50 var subtestCounter =
1;
56 return m.a.toFixed(decimals) +
"," +
57 m.b.toFixed(decimals) +
"," +
58 m.c.toFixed(decimals) +
"," +
59 m.d.toFixed(decimals) +
"," +
60 m.e.toFixed(decimals) +
"," +
61 m.f.toFixed(decimals);
64 function referenceEqual(m1,ref,eps)
66 return (Math.abs(m1.a-ref[
0]) < eps &&
67 Math.abs(m1.b-ref[
1]) < eps &&
68 Math.abs(m1.c-ref[
2]) < eps &&
69 Math.abs(m1.d-ref[
3]) < eps &&
70 Math.abs(m1.e-ref[
4]) < eps &&
71 Math.abs(m1.f-ref[
5]) < eps);
74 function assertEquals(m, ref, eps)
76 var result = document.createElementNS(
"http://www.w3.org/2000/svg",
"text");
77 var resultrect = document.createElementNS(
"http://www.w3.org/2000/svg",
"rect");
78 result.setAttribute(
"x", pos.x);
79 result.setAttribute(
"y", pos.y);
80 resultrect.setAttribute(
"fill",
"lime");
81 resultrect.setAttribute(
"width",
15);
82 resultrect.setAttribute(
"height",
15);
83 resultrect.setAttribute(
"y", pos.y-
15);
85 if(referenceEqual(m, ref, eps))
87 result.textContent =
"Passed subtest #" + subtestCounter;
92 result.textContent =
"Failed subtest #" + subtestCounter +
". Expected " + ref +
" but got " + toString(m);
96 var results = document.getElementById(
"subteststatus");
97 results.appendChild(resultrect)
98 results.appendChild(result);
103 eps =
0.005; //
"close enough"
104 r = document.getElementById(
"r");
106 t1 = r.transform.baseVal.getItem(
0);
107 t2 = r.transform.baseVal.getItem(
1);
109 // check that matrices are as specified in the markup
110 assertEquals(t1.matrix, [
1,
0,
0,
1,
10,
10], eps);
111 assertEquals(t2.matrix, [
0,
1, -
1,
0,
0,
0], eps);
114 tfm = r.transform.baseVal.consolidate();
116 // check that the consolidation is ok
117 assertEquals(tfm.matrix, [
0,
1, -
1,
0,
10,
10], eps);
119 // check that t1 and t2 were not affected by the consolidation
120 assertEquals(t1.matrix, [
1,
0,
0,
1,
10,
10], eps);
121 assertEquals(t2.matrix, [
0,
1, -
1,
0,
0,
0], eps);
123 // check that modifying t1 has no effect on the consolidated transform
124 t1.setTranslate(
10,
200);
125 assertEquals(t1.matrix, [
1,
0,
0,
1,
10,
200], eps);
126 assertEquals(tfm.matrix, [
0,
1, -
1,
0,
10,
10], eps);
128 // check that modifying t2 has no effect on the consolidated transform
129 t2.setRotate(-
90,
0,
0);
130 assertEquals(t2.matrix, [
0, -
1,
1,
0,
0,
0], eps);
131 assertEquals(tfm.matrix, [
0,
1, -
1,
0,
10,
10], eps);
133 // check that modifying the consolidated transform has no effect on the t1 and t2 transforms
135 assertEquals(tfm.matrix, [
0,
1, -
1,
0,
10,
400], eps);
136 assertEquals(t1.matrix, [
1,
0,
0,
1,
10,
200], eps);
137 assertEquals(t2.matrix, [
0, -
1,
1,
0,
0,
0], eps);
139 document.getElementById(
"status").setAttributeNS(null,
"fill", passed ?
"lime" :
"red");
140 document.getElementById(
"scriptstatus").textContent =
"Scripting enabled";
146 <g transform=
"translate(20 -10)">
147 <g id=
"subteststatus" transform=
"translate(0,40)">
148 <rect id=
"status" y=
"5" width=
"15" height=
"15" fill=
"red"/>
149 <text id=
"scriptstatus" y=
"20" x=
"20" >Scripting disabled
</text>
152 <polyline id=
"r" fill=
"none" stroke=
"green" display=
"none" transform=
"translate(10 10) rotate(90)" points=
"0 0 30 40 80 -20" stroke-width=
"10"/>
155 <g font-family=
"SVGFreeSansASCII,sans-serif" font-size=
"32">
156 <text id=
"revision" x=
"10" y=
"340" stroke=
"none"
157 fill=
"black">$Revision:
1.5 $
</text>
159 <rect id=
"test-frame" x=
"1" y=
"1" width=
"478" height=
"358" fill=
"none" stroke=
"#000"/>
160 <!-- comment out this watermark once the test is approved --><!--
161 <g id="draft-watermark">
162 <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
163 <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
164 text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>