This test checks the use of SVGAnimatedEnumeration within SVGFEConvolveMatrixElement

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".



Check initial 'edgeMode' value
PASS feConvolveMatrixElement.edgeMode.toString() is "[object SVGAnimatedEnumeration]"
PASS typeof(feConvolveMatrixElement.edgeMode.baseVal) is "number"
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE

Switch to 'wrap'
PASS feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP is SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_WRAP
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "wrap"

Switch to 'none'
PASS feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE is SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "none"

Try setting invalid values
PASS feConvolveMatrixElement.edgeMode.baseVal = 4 threw exception TypeError: Type error.
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "none"
PASS feConvolveMatrixElement.edgeMode.baseVal = -1 threw exception TypeError: Type error.
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "none"
PASS feConvolveMatrixElement.edgeMode.baseVal = 0 threw exception TypeError: Type error.
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_NONE
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "none"

Switch to 'duplicate'
PASS feConvolveMatrixElement.edgeMode.baseVal = SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE is SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE
PASS feConvolveMatrixElement.edgeMode.baseVal is SVGFEConvolveMatrixElement.SVG_EDGEMODE_DUPLICATE
PASS feConvolveMatrixElement.getAttribute('edgeMode') is "duplicate"
PASS successfullyParsed is true

TEST COMPLETE

