Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE HTML>
<title>Use of SVGAnimatedEnumeration within SVGTextPathElement</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function() {
// This test checks the use of SVGAnimatedEnumeration within SVGTextPathElement.
var textPathElement = document.createElementNS("http://www.w3.org/2000/svg", "textPath");
textPathElement.setAttribute("method", "align");
textPathElement.setAttribute("spacing", "auto");
// method
// Check initial 'method' value.
assert_true(textPathElement.method instanceof SVGAnimatedEnumeration);
assert_equals(typeof(textPathElement.method.baseVal), "number");
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN);
// Switch to 'stretch'.
textPathElement.method.baseVal = SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH;
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH);
assert_equals(textPathElement.getAttribute('method'), "stretch");
// Try setting invalid values.
assert_throws_js(TypeError, function() { textPathElement.method.baseVal = 3; });
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH);
assert_equals(textPathElement.getAttribute('method'), "stretch");
assert_throws_js(TypeError, function() { textPathElement.method.baseVal = -1; });
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH);
assert_equals(textPathElement.getAttribute('method'), "stretch");
assert_throws_js(TypeError, function() { textPathElement.method.baseVal = 0; });
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_STRETCH);
assert_equals(textPathElement.getAttribute('method'), "stretch");
// Switch to 'align'.
textPathElement.method.baseVal = SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN;
assert_equals(textPathElement.method.baseVal, SVGTextPathElement.TEXTPATH_METHODTYPE_ALIGN);
assert_equals(textPathElement.getAttribute('method'), "align");
// spacing
// Check initial 'spacing' value.
assert_true(textPathElement.spacing instanceof SVGAnimatedEnumeration);
assert_equals(typeof(textPathElement.spacing.baseVal), "number");
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO);
// Switch to 'exact'.
textPathElement.spacing.baseVal = SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT;
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT);
assert_equals(textPathElement.getAttribute('spacing'), "exact");
// Try setting invalid values.
assert_throws_js(TypeError, function() { textPathElement.spacing.baseVal = 3; });
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT);
assert_equals(textPathElement.getAttribute('spacing'), "exact");
assert_throws_js(TypeError, function() { textPathElement.spacing.baseVal = -1; });
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT);
assert_equals(textPathElement.getAttribute('spacing'), "exact");
assert_throws_js(TypeError, function() { textPathElement.spacing.baseVal = 0; });
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_EXACT);
assert_equals(textPathElement.getAttribute('spacing'), "exact");
// Switch to 'auto'.
textPathElement.spacing.baseVal = SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO;
assert_equals(textPathElement.spacing.baseVal, SVGTextPathElement.TEXTPATH_SPACINGTYPE_AUTO);
assert_equals(textPathElement.getAttribute('spacing'), "auto");
});
</script>