Index: third_party/WebKit/LayoutTests/svg/dom/SVGAngle.html |
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGAngle.html b/third_party/WebKit/LayoutTests/svg/dom/SVGAngle.html |
index d12930bb05ed563e0c70d4186a0d1465bb95b0b6..a609edcf798e4906ff326f493b3a99ec41858c02 100644 |
--- a/third_party/WebKit/LayoutTests/svg/dom/SVGAngle.html |
+++ b/third_party/WebKit/LayoutTests/svg/dom/SVGAngle.html |
@@ -1,11 +1,241 @@ |
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
-<html> |
-<head> |
-<script src="../../resources/js-test.js"></script> |
-</head> |
-<body> |
-<p id="description"></p> |
-<div id="console"></div> |
-<script src="script-tests/SVGAngle.js"></script> |
-</body> |
-</html> |
+<!DOCTYPE HTML> |
+<title>SVGAngle interface</title> |
+<script src="../../resources/testharness.js"></script> |
+<script src="../../resources/testharnessreport.js"></script> |
+<script> |
+test(function() { |
+ // This test checks the SVGAngle API. |
+ |
+ var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg"); |
+ var angle = svgElement.createSVGAngle(); |
+ |
+ // Check initial angle values. |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ |
+ // Spec: Raised if unitType is SVG_ANGLETYPE_UNKNOWN or not a valid unit type constant (one of the other SVG_ANGLETYPE_* constants defined on this interface). |
+ // Check invalid arguments for 'convertToSpecifiedUnits'. |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN); }); |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(-1); }); |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(5); }); |
+ // 'aString' converts to short 0 (through NaN) according to ECMA-262, ToUint16. |
+ // Therefore this throws NOT_SUPPORTED_ERR. |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits('aString'); }); |
+ // Same here, via ToString conversion of object. |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(angle); }); |
+ // Same here, via ToString conversion of object. |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(svgElement); }); |
+ assert_throws(new TypeError(), function() { angle.convertToSpecifiedUnits(); }); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Check valid arguments for 'convertToSpecifiedUnits', that should only modify the 'valueAsString'"); |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_RAD); |
+ assert_equals(angle.valueAsString, "0rad"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_RAD); |
+ |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_GRAD); |
+ assert_equals(angle.valueAsString, "0grad"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_GRAD); |
+ |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG); |
+ assert_equals(angle.valueAsString, "0deg"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Spec: Raised if unitType is SVG_ANGLETYPE_UNKNOWN or not a valid unit type constant (one of the other SVG_ANGLETYPE_* constants defined on this interface). |
+ // Check invalid arguments for 'newValueSpecifiedUnits'. |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN, 50); }); |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits(-1, 50); }); |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits(5, 50); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 'aString'); }); |
+ assert_equals(angle.value, 0); |
+ |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 0); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, angle); }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, svgElement); }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, NaN); }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, Infinity); }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG); }); |
+ |
+ // All of the following unitType arguments convert to 0 (SVG_ANGLETYPE_UNKNOWN). |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits('aString', 4); }); |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits(angle, 4); }); |
+ assert_throws("NotSupportedError", function() { angle.newValueSpecifiedUnits(svgElement, 4); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits('aString', 'aString'); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(angle, angle); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(svgElement, svgElement); }); |
+ assert_throws(new TypeError(), function() { angle.newValueSpecifiedUnits(); }); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ // Check valid arguments for 'newValueSpecifiedUnits', that should only modify the 'valueAsString'. |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_RAD, parseFloat(Math.PI.toFixed(5))); |
+ assert_equals(angle.valueAsString, Math.PI.toFixed(5) + "rad"); |
+ assert_equals(angle.value.toFixed(1), "180.0"); |
+ assert_equals(angle.valueInSpecifiedUnits.toFixed(5), Math.PI.toFixed(5)); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_RAD); |
+ |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_GRAD, 400); |
+ assert_equals(angle.valueAsString, "400grad"); |
+ assert_equals(angle.value.toFixed(1), "360.0"); |
+ assert_equals(angle.valueInSpecifiedUnits, 400); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_GRAD); |
+ |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 360); |
+ assert_equals(angle.valueAsString, "360deg"); |
+ assert_equals(angle.value, 360); |
+ assert_equals(angle.valueInSpecifiedUnits, 360); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNSPECIFIED, 180); |
+ assert_equals(angle.valueAsString, "180"); |
+ assert_equals(angle.value, 180); |
+ assert_equals(angle.valueInSpecifiedUnits, 180); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Reset to initial angle state. |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNSPECIFIED, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Spec: Raised if the assigned string cannot be parsed as a valid <angle>. |
+ // Check setting invalid 'valueAsString' arguments. |
+ assert_throws("SyntaxError", function() { angle.valueAsString = '10px'; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ assert_throws("SyntaxError", function() { angle.valueAsString = '10x'; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ assert_throws("SyntaxError", function() { angle.valueAsString = '5graD'; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ assert_throws("SyntaxError", function() { angle.valueAsString = '5Rad'; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ assert_throws("SyntaxError", function() { angle.valueAsString = ',5 rad'; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ assert_throws("SyntaxError", function() { angle.valueAsString = null; }); |
+ assert_equals(angle.valueAsString, "0"); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Check setting invalid 'valueInSpecifiedUnits' arguments |
+ assert_throws(new TypeError(), function() { angle.valueInSpecifiedUnits = 'test'; }); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ angle.valueInSpecifiedUnits = 0; |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ |
+ assert_throws(new TypeError(), function() { angle.valueInSpecifiedUnits = angle; }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.valueInSpecifiedUnits = NaN; }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.valueInSpecifiedUnits = Infinity; }); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Check setting invalid 'value' arguments. |
+ angle.value = 0; |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.value = 'test'; }); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ angle.value = 0; |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.value = angle; }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.value = NaN; }); |
+ assert_equals(angle.value, 0); |
+ assert_throws(new TypeError(), function() { angle.value = Infinity; }); |
+ assert_equals(angle.value, 0); |
+ assert_equals(angle.valueInSpecifiedUnits, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_UNSPECIFIED); |
+ |
+ // Reset to angle in degree units. |
+ angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 0); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ // Check setting valid 'value' arguments, assure that 'valueInSpecifiedUnits' and 'valueAsString' are synchronized. |
+ angle.value = 50; |
+ assert_equals(angle.value, 50); |
+ assert_equals(angle.valueInSpecifiedUnits, 50); |
+ assert_equals(angle.valueAsString, "50deg"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ // Try modifiying the readonly 'unitType', needs to fail. |
+ angle.unitType = SVGAngle.SVG_ANGLETYPE_RAD; |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ // Check setting valid 'valueInSpecifiedUnits' arguments, assure that 'value' and 'valueAsString' are synchronized. |
+ angle.valueInSpecifiedUnits = 100; |
+ assert_equals(angle.valueInSpecifiedUnits, 100); |
+ assert_equals(angle.value, 100); |
+ assert_equals(angle.valueAsString, "100deg"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+ |
+ // Check setting valid 'valueAsString' arguments, assure that 'value' and 'valueInSpecifiedUnits' are synchronized. |
+ angle.valueAsString = '200grad'; |
+ assert_equals(angle.valueAsString, "200grad"); |
+ assert_equals(angle.valueInSpecifiedUnits, 200); |
+ assert_equals(angle.value.toFixed(1), "180.0"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_GRAD); |
+ |
+ // Now convert the GRAD value into a RAD value, and assure that all properties have been synchronized. |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_RAD); |
+ assert_equals(angle.value.toFixed(1), "180.0"); |
+ assert_equals(angle.valueInSpecifiedUnits.toFixed(5), Math.PI.toFixed(5)); |
+ assert_equals(angle.valueAsString, Math.PI.toFixed(5) + "rad"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_RAD); |
+ |
+ // Now try converting the RAD value into an unknown value, that should fail and throw; |
+ assert_throws("NotSupportedError", function() { angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_UNKNOWN); }); |
+ assert_equals(angle.value.toFixed(1), "180.0"); |
+ assert_equals(angle.valueInSpecifiedUnits.toFixed(5), Math.PI.toFixed(5)); |
+ assert_equals(angle.valueAsString, Math.PI.toFixed(5) + "rad"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_RAD); |
+ |
+ // Now convert the RAD value into a DEG value, and assure that all properties have been synchronized. |
+ angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG); |
+ assert_equals(angle.value.toFixed(1), "180.0"); |
+ assert_equals(angle.valueInSpecifiedUnits.toFixed(1), "180.0"); |
+ assert_equals(angle.valueAsString, "180deg"); |
+ assert_equals(angle.unitType, SVGAngle.SVG_ANGLETYPE_DEG); |
+}); |
+</script> |