2 <title>SVGAngle tests
</title>
3 <script src=../../resources/testharness.js
></script>
4 <script src=../../resources/testharnessreport.js
></script>
5 <div id=
"testcontainer">
6 <svg width=
"1" height=
"1" visibility=
"hidden">
12 var svg
= document
.querySelector("svg");
13 var marker
= document
.querySelector("marker");
14 var EPSILON
= Math
.pow(2, -8);
15 var angles
= [ 10, 0, 360, 500, 90, 180, 45, 25.9, 145, 270, 0.5, 0.2, 1.37, 3.14159 /* Math.PI */, 0.523599 /* Math.PI/6 */ ];
23 var highestExposedUnit = 4; // SVG_ANGLETYPE_GRAD
31 var nonexposedunitconstants = {
35 function convertTo(value, unit, outunit) {
44 return value*(Math.PI/180);
46 return value*(400/360);
54 return value * 180 / Math.PI;
58 return value * 180 / Math.PI * 400 / 360;
60 return value / (2 * Math.PI);
66 return value * 360 / 400;
68 return value * Math.PI * 2 / 400;
80 return value * Math.PI * 2;
89 function createAngle(valuestr) {
90 var angle = svg.createSVGAngle();
91 angle.valueAsString = valuestr;
95 for(var unit in units) {
97 var result = undefined;
99 var a = createAngle(47 + unit);
103 if (units[unit] > highestExposedUnit)
104 assert_equals(result, undefined);
106 assert_equals(result, units[unit]);
107 }, "SVGAngle(47" + unit + ").unitType");
110 for(var constant in unitconstants) {
111 var str = "SVG_ANGLETYPE_" + constant;
113 assert_exists(SVGAngle, str, "");
114 }, "SVGAngle." + str);
116 for(var constant in nonexposedunitconstants) {
117 var str = "SVG_ANGLETYPE_" + constant;
119 assert_not_exists(SVGAngle, str, "");
120 }, "SVGAngle." + str);
123 angles.forEach(function(angle) {
124 for(var unit in units) {
125 var anglestr = angle + unit;
128 ref = createAngle(anglestr);
135 assert_approx_equals(angle, ref.valueInSpecifiedUnits, EPSILON);
136 }, "SVGAngle(" + anglestr + ").valueInSpecifiedUnits");
139 marker.setAttribute("orient", anglestr);
142 assert_equals(marker.orientAngle.baseVal.valueAsString, anglestr);
143 }, "orient=\"" + anglestr + "\".valueAsString");
146 assert_approx_equals(marker.orientAngle.baseVal.value, convertTo(angle, unit, "deg"), EPSILON);
147 }, "orient=\"" + anglestr + "\".value");
150 marker.removeAttribute("orient");
153 for (var otherunit in units) {
155 var a = createAngle(anglestr);
157 a.convertToSpecifiedUnits(units[otherunit]);
162 if (units[otherunit] > highestExposedUnit)
163 assert_approx_equals(a.valueInSpecifiedUnits, angle, EPSILON);
165 assert_approx_equals(a.valueInSpecifiedUnits, convertTo(angle, unit, otherunit), EPSILON);
166 }, "SVGAngle(" + anglestr + ").convertToSpecifiedUnits(" + units[otherunit] + " /*" + (otherunit ? otherunit : "unspecified") + "*/)");
171 var a = createAngle(47 + otherunit);
172 a.newValueSpecifiedUnits(units[unit], angle);
173 result = a.valueAsString;
179 if (units[unit] > highestExposedUnit || units[otherunit] > highestExposedUnit)
180 assert_equals(result, "");
182 assert_equals(result, ref.valueAsString);
183 }, "newValueSpecifiedUnits(" + units[unit] + ", " + angle + ")" );