| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script> |
| description("This test checks the case-sensitivity of SVGAnimatedEnumeration elements"); |
| |
| var svgAnimatedEnumeration = { |
| |
| "SVGComponentTransferFunctionElement" : { |
| "type" : [ |
| {"id" : "identity", "val" : "SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY"}, |
| {"id" : "table", "val" : "SVG_FECOMPONENTTRANSFER_TYPE_TABLE"}, |
| {"id" : "discrete", "val" : "SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE"}, |
| {"id" : "linear", "val" : "SVG_FECOMPONENTTRANSFER_TYPE_LINEAR"}, |
| {"id" : "gamma", "val" : "SVG_FECOMPONENTTRANSFER_TYPE_GAMMA"} |
| ] |
| }, |
| "SVGFEBlendElement" : { |
| "mode" : [ |
| {"id" : "normal", "val" : "SVG_FEBLEND_MODE_NORMAL"}, |
| {"id" : "multiply", "val" : "SVG_FEBLEND_MODE_MULTIPLY"}, |
| {"id" : "screen", "val" : "SVG_FEBLEND_MODE_SCREEN"}, |
| {"id" : "darken", "val" : "SVG_FEBLEND_MODE_DARKEN"}, |
| {"id" : "lighten", "val" : "SVG_FEBLEND_MODE_LIGHTEN"}, |
| {"id" : "overlay", "val" : "SVG_FEBLEND_MODE_OVERLAY"}, |
| {"id" : "color-dodge", "val" : "SVG_FEBLEND_MODE_COLOR_DODGE"}, |
| {"id" : "color-burn", "val" : "SVG_FEBLEND_MODE_COLOR_BURN"}, |
| {"id" : "hard-light", "val" : "SVG_FEBLEND_MODE_HARD_LIGHT"}, |
| {"id" : "soft-light", "val" : "SVG_FEBLEND_MODE_SOFT_LIGHT"}, |
| {"id" : "difference", "val" : "SVG_FEBLEND_MODE_DIFFERENCE"}, |
| {"id" : "exclusion", "val" : "SVG_FEBLEND_MODE_EXCLUSION"}, |
| {"id" : "hue", "val" : "SVG_FEBLEND_MODE_HUE"}, |
| {"id" : "saturation", "val" : "SVG_FEBLEND_MODE_SATURATION"}, |
| {"id" : "color", "val" : "SVG_FEBLEND_MODE_COLOR"}, |
| {"id" : "luminosity", "val" : "SVG_FEBLEND_MODE_LUMINOSITY"} |
| ] |
| }, |
| "SVGFEColorMatrixElement" : { |
| "type" : [ |
| {"id" : "matrix", "val" : "SVG_FECOLORMATRIX_TYPE_MATRIX"}, |
| {"id" : "saturate", "val" : "SVG_FECOLORMATRIX_TYPE_SATURATE"}, |
| {"id" : "hueRotate", "val" : "SVG_FECOLORMATRIX_TYPE_HUEROTATE"}, |
| {"id" : "luminanceToAlpha", "val" : "SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA"} |
| ] |
| }, |
| "SVGFECompositeElement" : { |
| "operator" : [ |
| {"id" : "over", "val" : "SVG_FECOMPOSITE_OPERATOR_OVER"}, |
| {"id" : "in", "val" : "SVG_FECOMPOSITE_OPERATOR_IN"}, |
| {"id" : "out", "val" : "SVG_FECOMPOSITE_OPERATOR_OUT"}, |
| {"id" : "atop", "val" : "SVG_FECOMPOSITE_OPERATOR_ATOP"}, |
| {"id" : "xor", "val" : "SVG_FECOMPOSITE_OPERATOR_XOR"}, |
| {"id" : "arithmetic", "val" : "SVG_FECOMPOSITE_OPERATOR_ARITHMETIC"} |
| ] |
| }, |
| "SVGFEConvolveMatrixElement" : { |
| "edgeMode" : [ |
| {"id" : "duplicate", "val" : "SVG_EDGEMODE_DUPLICATE"}, |
| {"id" : "wrap", "val" : "SVG_EDGEMODE_WRAP"}, |
| {"id" : "none", "val" : "SVG_EDGEMODE_NONE"} |
| ] |
| }, |
| "SVGFEDisplacementMapElement" : { |
| "xChannelSelector" : [ |
| {"id" : "R", "val" : "SVG_CHANNEL_R"}, |
| {"id" : "G", "val" : "SVG_CHANNEL_G"}, |
| {"id" : "B", "val" : "SVG_CHANNEL_B"}, |
| {"id" : "A", "val" : "SVG_CHANNEL_A"} |
| ] |
| }, |
| "SVGFEMorphologyElement" : { |
| "operator" : [ |
| {"id" : "erode", "val" : "SVG_MORPHOLOGY_OPERATOR_ERODE"}, |
| {"id" : "dilate", "val" : "SVG_MORPHOLOGY_OPERATOR_DILATE"} |
| ] |
| }, |
| "SVGFETurbulenceElement" : { |
| "type" : [ |
| {"id" : "fractalNoise", "val" : "SVG_TURBULENCE_TYPE_FRACTALNOISE"}, |
| {"id" : "turbulence", "val" : "SVG_TURBULENCE_TYPE_TURBULENCE"} |
| ], |
| "stitchTiles" : [ |
| {"id" : "stitch", "val" : "SVG_STITCHTYPE_STITCH"}, |
| {"id" : "noStitch", "val" : "SVG_STITCHTYPE_NOSTITCH"} |
| ] |
| }, |
| "SVGGradientElement" : { |
| "spreadMethod" : [ |
| {"id" : "pad", "val" : "SVG_SPREADMETHOD_PAD"}, |
| {"id" : "reflect", "val" : "SVG_SPREADMETHOD_REFLECT"}, |
| {"id" : "repeat", "val" : "SVG_SPREADMETHOD_REPEAT"} |
| ] |
| }, |
| "SVGMarkerElement" : { |
| "markerUnits" : [ |
| {"id" : "userSpaceOnUse", "val" : "SVG_MARKERUNITS_USERSPACEONUSE"}, |
| {"id" : "strokeWidth", "val" : "SVG_MARKERUNITS_STROKEWIDTH"} |
| ] |
| }, |
| "SVGTextContentElement" : { |
| "lengthAdjust" : [ |
| {"id" : "spacing", "val" : "LENGTHADJUST_SPACING"}, |
| {"id" : "spacingAndGlyphs", "val" : "LENGTHADJUST_SPACINGANDGLYPHS"} |
| ] |
| }, |
| "SVGTextPathElement" : { |
| "method" : [ |
| {"id" : "align", "val" : "TEXTPATH_METHODTYPE_ALIGN"}, |
| {"id" : "stretch", "val" : "TEXTPATH_METHODTYPE_STRETCH"} |
| ], |
| "spacing" : [ |
| {"id" : "auto", "val" : "TEXTPATH_SPACINGTYPE_AUTO"}, |
| {"id" : "exact", "val" : "TEXTPATH_SPACINGTYPE_EXACT"} |
| ] |
| }, |
| // All *Units attributes in SVG use SVGUnitTypes so we only need to test this once. |
| "SVGUnitTypes" : { |
| "gradientUnits" : [ |
| {"id" : "userSpaceOnUse", "val" : "SVG_UNIT_TYPE_USERSPACEONUSE"}, |
| {"id" : "objectBoundingBox", "val" : "SVG_UNIT_TYPE_OBJECTBOUNDINGBOX"} |
| ] |
| }, |
| }; |
| |
| function testCaseSensitivity(elementType, element, enumType) |
| { |
| debug(""); |
| debug("Check valid " + element.tagName + " '" + enumType + "'"); |
| |
| var enumValues = svgAnimatedEnumeration[elementType][enumType]; |
| |
| for (var i = 0; i < enumValues.length; i++) { |
| debug(""); |
| shouldBeUndefined(element.id + ".setAttribute('" + enumType + "', '" + enumValues[i].id + "')"); |
| shouldBeEqualToString(element.id + ".getAttribute('" + enumType + "')", enumValues[i].id); |
| shouldBe(element.id + "." + enumType + ".baseVal", elementType + "." + enumValues[i].val); |
| } |
| |
| debug(""); |
| debug("Check invalid case " + element.tagName + " '" + enumType + "'"); |
| for (var i = 0; i < enumValues.length; i++) { |
| var val = enumValues[i].id; |
| var alt_val = enumValues[((i + 1) % enumValues.length)]; |
| |
| debug(""); |
| |
| debug(element.id + ".setAttribute('" + enumType + "', '" + alt_val.id + "')"); |
| element.setAttribute(enumType, alt_val.id); |
| |
| var val_check = (val.toUpperCase() == val) ? val.toLowerCase() : val.toUpperCase(); |
| shouldBeUndefined(element.id + ".setAttribute('" + enumType + "', '" + val_check + "')"); |
| shouldBeEqualToString(element.id + ".getAttribute('" + enumType + "')", val_check); |
| shouldBe(element.id + "." + enumType + ".baseVal", elementType + "." + alt_val.val); |
| } |
| } |
| |
| // SVGComponentTransferFunctionElement |
| var transferFunctionElement = document.createElementNS("http://www.w3.org/2000/svg", "feFuncR"); |
| transferFunctionElement.id = "transferFunctionElement"; |
| testCaseSensitivity("SVGComponentTransferFunctionElement", transferFunctionElement, "type"); |
| |
| // SVGFEBlendElement |
| var feBlendElement = document.createElementNS("http://www.w3.org/2000/svg", "feBlend"); |
| feBlendElement.id = "feBlendElement"; |
| testCaseSensitivity("SVGFEBlendElement", feBlendElement, "mode"); |
| |
| // SVGFEColorMatrixElement |
| var feColorMatrixElement = document.createElementNS("http://www.w3.org/2000/svg", "feColorMatrix"); |
| feColorMatrixElement.id = "feColorMatrixElement"; |
| testCaseSensitivity("SVGFEColorMatrixElement", feColorMatrixElement, "type"); |
| |
| // SVGFECompositeElement |
| var feCompositeElement = document.createElementNS("http://www.w3.org/2000/svg", "feComposite"); |
| feCompositeElement.id = "feCompositeElement"; |
| testCaseSensitivity("SVGFECompositeElement", feCompositeElement, "operator"); |
| |
| // SVGFEConvolveMatrixElement |
| var feConvolveMatrixElement = document.createElementNS("http://www.w3.org/2000/svg", "feConvolveMatrix"); |
| feConvolveMatrixElement.id = "feConvolveMatrixElement"; |
| testCaseSensitivity("SVGFEConvolveMatrixElement", feConvolveMatrixElement, "edgeMode"); |
| |
| // SVGFEDisplacementMapElement |
| var feDisplacementMapElement = document.createElementNS("http://www.w3.org/2000/svg", "feDisplacementMap"); |
| feDisplacementMapElement.id = "feDisplacementMapElement"; |
| testCaseSensitivity("SVGFEDisplacementMapElement", feDisplacementMapElement, "xChannelSelector"); |
| |
| // SVGFEMorphologyElement |
| var feMorphologyElement = document.createElementNS("http://www.w3.org/2000/svg", "feMorphology"); |
| feMorphologyElement.id = "feMorphologyElement"; |
| testCaseSensitivity("SVGFEMorphologyElement", feMorphologyElement, "operator"); |
| |
| // SVGFETurbulenceElement |
| var feTurbulenceElement = document.createElementNS("http://www.w3.org/2000/svg", "feTurbulence"); |
| feTurbulenceElement.id = "feTurbulenceElement"; |
| testCaseSensitivity("SVGFETurbulenceElement", feTurbulenceElement, "type"); |
| testCaseSensitivity("SVGFETurbulenceElement", feTurbulenceElement, "stitchTiles"); |
| |
| // SVGGradientElement |
| var gradientElement = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient"); |
| gradientElement.id = "gradientElement"; |
| testCaseSensitivity("SVGGradientElement", gradientElement, "spreadMethod"); |
| testCaseSensitivity("SVGUnitTypes", gradientElement, "gradientUnits"); |
| |
| // SVGMarkerElement |
| var markerElement = document.createElementNS("http://www.w3.org/2000/svg", "marker"); |
| markerElement.id = "markerElement"; |
| testCaseSensitivity("SVGMarkerElement", markerElement, "markerUnits"); |
| |
| // SVGTextContentElement |
| var textContentElement = document.createElementNS("http://www.w3.org/2000/svg", "text"); |
| textContentElement.id = "textContentElement"; |
| testCaseSensitivity("SVGTextContentElement", textContentElement, "lengthAdjust"); |
| |
| // SVGTextPathElement |
| var textPathElement = document.createElementNS("http://www.w3.org/2000/svg", "textPath"); |
| textPathElement.id = "textPathElement"; |
| testCaseSensitivity("SVGTextPathElement", textPathElement, "method"); |
| testCaseSensitivity("SVGTextPathElement", textPathElement, "spacing"); |
| |
| debug(""); |
| |
| successfullyParsed = true; |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |