| <!DOCTYPE HTML> |
| <title>Use of SVGAnimatedEnumeration within SVGFEBlendElement</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| test(function() { |
| // This test checks the use of SVGAnimatedEnumeration within SVGFEBlendElement. |
| |
| var feBlendElement = document.createElementNS("http://www.w3.org/2000/svg", "feBlend"); |
| feBlendElement.setAttribute("mode", "normal"); |
| |
| // Check initial 'mode' value. |
| assert_true(feBlendElement.mode instanceof SVGAnimatedEnumeration); |
| assert_equals(typeof(feBlendElement.mode.baseVal), "number"); |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL); |
| |
| // Switch to 'multiply'. |
| feBlendElement.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY; |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_MULTIPLY); |
| assert_equals(feBlendElement.getAttribute('mode'), "multiply"); |
| |
| // Switch to 'screen'. |
| feBlendElement.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN; |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_SCREEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "screen"); |
| |
| // Switch to 'darken'; |
| feBlendElement.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN; |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_DARKEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "darken"); |
| |
| // Switch to 'lighten' |
| feBlendElement.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN; |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "lighten"); |
| |
| // Try setting invalid values. |
| assert_throws(new TypeError(), function() { feBlendElement.mode.baseVal = 6; }); |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "lighten"); |
| |
| assert_throws(new TypeError(), function() { feBlendElement.mode.baseVal = -1; }); |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "lighten"); |
| |
| assert_throws(new TypeError(), function() { feBlendElement.mode.baseVal = 0; }); |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN); |
| assert_equals(feBlendElement.getAttribute('mode'), "lighten"); |
| |
| // Switch to 'normal'. |
| feBlendElement.mode.baseVal = SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL; |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL); |
| assert_equals(feBlendElement.getAttribute('mode'), "normal"); |
| |
| // baseVal access when mode is set to a value not in SVGFEBlendElement.SVG_FEBLEND_MODE_*. . |
| feBlendElement.setAttribute("mode", "color-dodge"); |
| assert_equals(feBlendElement.mode.baseVal, SVGFEBlendElement.SVG_FEBLEND_MODE_UNKNOWN); |
| assert_throws(new TypeError(), function() { feBlendElement.mode.baseVal = 13; }); |
| assert_equals(feBlendElement.getAttribute('mode'), "color-dodge"); |
| }); |
| </script> |