Test to make sure we expose all the global constructor objects requested by http://www.w3.org/TR/SVG11/ecmascript-binding.html

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


PASS SVGElement.toString() is "function SVGElement() {\n    [native code]\n}"
PASS SVGAnimatedBoolean.toString() is "function SVGAnimatedBoolean() {\n    [native code]\n}"
PASS SVGAnimatedString.toString() is "function SVGAnimatedString() {\n    [native code]\n}"
PASS SVGStringList.toString() is "function SVGStringList() {\n    [native code]\n}"
PASS SVGAnimatedEnumeration.toString() is "function SVGAnimatedEnumeration() {\n    [native code]\n}"
PASS SVGAnimatedInteger.toString() is "function SVGAnimatedInteger() {\n    [native code]\n}"
PASS SVGNumber.toString() is "function SVGNumber() {\n    [native code]\n}"
PASS SVGAnimatedNumber.toString() is "function SVGAnimatedNumber() {\n    [native code]\n}"
PASS SVGNumberList.toString() is "function SVGNumberList() {\n    [native code]\n}"
PASS SVGAnimatedNumberList.toString() is "function SVGAnimatedNumberList() {\n    [native code]\n}"
PASS SVGLength.toString() is "function SVGLength() {\n    [native code]\n}"
PASS SVGAnimatedLength.toString() is "function SVGAnimatedLength() {\n    [native code]\n}"
PASS SVGLengthList.toString() is "function SVGLengthList() {\n    [native code]\n}"
PASS SVGAnimatedLengthList.toString() is "function SVGAnimatedLengthList() {\n    [native code]\n}"
PASS SVGAngle.toString() is "function SVGAngle() {\n    [native code]\n}"
PASS SVGAnimatedAngle.toString() is "function SVGAnimatedAngle() {\n    [native code]\n}"
FAIL SVGICCColor.toString() should be function SVGICCColor() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGICCColor
PASS SVGRect.toString() is "function SVGRect() {\n    [native code]\n}"
PASS SVGAnimatedRect.toString() is "function SVGAnimatedRect() {\n    [native code]\n}"
FAIL SVGStylable.toString() should be function SVGStylable() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGStylable
FAIL SVGLocatable.toString() should be function SVGLocatable() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGLocatable
FAIL SVGTransformable.toString() should be function SVGTransformable() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGTransformable
FAIL SVGTests.toString() should be function SVGTests() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGTests
FAIL SVGLangSpace.toString() should be function SVGLangSpace() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGLangSpace
PASS SVGViewSpec.toString() is "function SVGViewSpec() {\n    [native code]\n}"
FAIL SVGURIReference.toString() should be function SVGURIReference() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGURIReference
FAIL SVGCSSRule.toString() should be function SVGCSSRule() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGCSSRule
PASS SVGSVGElement.toString() is "function SVGSVGElement() {\n    [native code]\n}"
PASS SVGGElement.toString() is "function SVGGElement() {\n    [native code]\n}"
PASS SVGDefsElement.toString() is "function SVGDefsElement() {\n    [native code]\n}"
PASS SVGDescElement.toString() is "function SVGDescElement() {\n    [native code]\n}"
PASS SVGTitleElement.toString() is "function SVGTitleElement() {\n    [native code]\n}"
PASS SVGSymbolElement.toString() is "function SVGSymbolElement() {\n    [native code]\n}"
PASS SVGUseElement.toString() is "function SVGUseElement() {\n    [native code]\n}"
PASS SVGImageElement.toString() is "function SVGImageElement() {\n    [native code]\n}"
PASS SVGSwitchElement.toString() is "function SVGSwitchElement() {\n    [native code]\n}"
PASS SVGStyleElement.toString() is "function SVGStyleElement() {\n    [native code]\n}"
PASS SVGPoint.toString() is "function SVGPoint() {\n    [native code]\n}"
PASS SVGPointList.toString() is "function SVGPointList() {\n    [native code]\n}"
PASS SVGMatrix.toString() is "function SVGMatrix() {\n    [native code]\n}"
PASS SVGTransform.toString() is "function SVGTransform() {\n    [native code]\n}"
PASS SVGTransformList.toString() is "function SVGTransformList() {\n    [native code]\n}"
PASS SVGAnimatedTransformList.toString() is "function SVGAnimatedTransformList() {\n    [native code]\n}"
PASS SVGPreserveAspectRatio.toString() is "function SVGPreserveAspectRatio() {\n    [native code]\n}"
PASS SVGAnimatedPreserveAspectRatio.toString() is "function SVGAnimatedPreserveAspectRatio() {\n    [native code]\n}"
PASS SVGPathSeg.toString() is "function SVGPathSeg() {\n    [native code]\n}"
PASS SVGPathSegClosePath.toString() is "function SVGPathSegClosePath() {\n    [native code]\n}"
PASS SVGPathSegMovetoAbs.toString() is "function SVGPathSegMovetoAbs() {\n    [native code]\n}"
PASS SVGPathSegMovetoRel.toString() is "function SVGPathSegMovetoRel() {\n    [native code]\n}"
PASS SVGPathSegLinetoAbs.toString() is "function SVGPathSegLinetoAbs() {\n    [native code]\n}"
PASS SVGPathSegLinetoRel.toString() is "function SVGPathSegLinetoRel() {\n    [native code]\n}"
PASS SVGPathSegCurvetoCubicAbs.toString() is "function SVGPathSegCurvetoCubicAbs() {\n    [native code]\n}"
PASS SVGPathSegCurvetoCubicRel.toString() is "function SVGPathSegCurvetoCubicRel() {\n    [native code]\n}"
PASS SVGPathSegCurvetoQuadraticAbs.toString() is "function SVGPathSegCurvetoQuadraticAbs() {\n    [native code]\n}"
PASS SVGPathSegCurvetoQuadraticRel.toString() is "function SVGPathSegCurvetoQuadraticRel() {\n    [native code]\n}"
PASS SVGPathSegArcAbs.toString() is "function SVGPathSegArcAbs() {\n    [native code]\n}"
PASS SVGPathSegArcRel.toString() is "function SVGPathSegArcRel() {\n    [native code]\n}"
PASS SVGPathSegLinetoHorizontalAbs.toString() is "function SVGPathSegLinetoHorizontalAbs() {\n    [native code]\n}"
PASS SVGPathSegLinetoHorizontalRel.toString() is "function SVGPathSegLinetoHorizontalRel() {\n    [native code]\n}"
PASS SVGPathSegLinetoVerticalAbs.toString() is "function SVGPathSegLinetoVerticalAbs() {\n    [native code]\n}"
PASS SVGPathSegLinetoVerticalRel.toString() is "function SVGPathSegLinetoVerticalRel() {\n    [native code]\n}"
PASS SVGPathSegCurvetoCubicSmoothAbs.toString() is "function SVGPathSegCurvetoCubicSmoothAbs() {\n    [native code]\n}"
PASS SVGPathSegCurvetoCubicSmoothRel.toString() is "function SVGPathSegCurvetoCubicSmoothRel() {\n    [native code]\n}"
PASS SVGPathSegCurvetoQuadraticSmoothAbs.toString() is "function SVGPathSegCurvetoQuadraticSmoothAbs() {\n    [native code]\n}"
PASS SVGPathSegCurvetoQuadraticSmoothRel.toString() is "function SVGPathSegCurvetoQuadraticSmoothRel() {\n    [native code]\n}"
PASS SVGPathSegList.toString() is "function SVGPathSegList() {\n    [native code]\n}"
FAIL SVGAnimatedPathData.toString() should be function SVGAnimatedPathData() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGAnimatedPathData
PASS SVGPathElement.toString() is "function SVGPathElement() {\n    [native code]\n}"
PASS SVGRectElement.toString() is "function SVGRectElement() {\n    [native code]\n}"
PASS SVGCircleElement.toString() is "function SVGCircleElement() {\n    [native code]\n}"
PASS SVGEllipseElement.toString() is "function SVGEllipseElement() {\n    [native code]\n}"
PASS SVGLineElement.toString() is "function SVGLineElement() {\n    [native code]\n}"
FAIL SVGAnimatedPoints.toString() should be function SVGAnimatedPoints() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGAnimatedPoints
PASS SVGPolylineElement.toString() is "function SVGPolylineElement() {\n    [native code]\n}"
PASS SVGPolygonElement.toString() is "function SVGPolygonElement() {\n    [native code]\n}"
PASS SVGTextContentElement.toString() is "function SVGTextContentElement() {\n    [native code]\n}"
PASS SVGTextPositioningElement.toString() is "function SVGTextPositioningElement() {\n    [native code]\n}"
PASS SVGTextElement.toString() is "function SVGTextElement() {\n    [native code]\n}"
PASS SVGTSpanElement.toString() is "function SVGTSpanElement() {\n    [native code]\n}"
PASS SVGTRefElement.toString() is "function SVGTRefElement() {\n    [native code]\n}"
PASS SVGTextPathElement.toString() is "function SVGTextPathElement() {\n    [native code]\n}"
PASS SVGAltGlyphElement.toString() is "function SVGAltGlyphElement() {\n    [native code]\n}"
PASS SVGAltGlyphDefElement.toString() is "function SVGAltGlyphDefElement() {\n    [native code]\n}"
PASS SVGAltGlyphItemElement.toString() is "function SVGAltGlyphItemElement() {\n    [native code]\n}"
PASS SVGGlyphRefElement.toString() is "function SVGGlyphRefElement() {\n    [native code]\n}"
PASS SVGMarkerElement.toString() is "function SVGMarkerElement() {\n    [native code]\n}"
FAIL SVGColorProfileElement.toString() should be function SVGColorProfileElement() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGColorProfileElement
FAIL SVGColorProfileRule.toString() should be function SVGColorProfileRule() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGColorProfileRule
PASS SVGGradientElement.toString() is "function SVGGradientElement() {\n    [native code]\n}"
PASS SVGLinearGradientElement.toString() is "function SVGLinearGradientElement() {\n    [native code]\n}"
PASS SVGRadialGradientElement.toString() is "function SVGRadialGradientElement() {\n    [native code]\n}"
PASS SVGStopElement.toString() is "function SVGStopElement() {\n    [native code]\n}"
PASS SVGPatternElement.toString() is "function SVGPatternElement() {\n    [native code]\n}"
PASS SVGClipPathElement.toString() is "function SVGClipPathElement() {\n    [native code]\n}"
PASS SVGMaskElement.toString() is "function SVGMaskElement() {\n    [native code]\n}"
PASS SVGFilterElement.toString() is "function SVGFilterElement() {\n    [native code]\n}"
FAIL SVGFilterPrimitiveStandardAttributes.toString() should be function SVGFilterPrimitiveStandardAttributes() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGFilterPrimitiveStandardAttributes
PASS SVGFEBlendElement.toString() is "function SVGFEBlendElement() {\n    [native code]\n}"
PASS SVGFEColorMatrixElement.toString() is "function SVGFEColorMatrixElement() {\n    [native code]\n}"
PASS SVGFEComponentTransferElement.toString() is "function SVGFEComponentTransferElement() {\n    [native code]\n}"
PASS SVGComponentTransferFunctionElement.toString() is "function SVGComponentTransferFunctionElement() {\n    [native code]\n}"
PASS SVGFEFuncRElement.toString() is "function SVGFEFuncRElement() {\n    [native code]\n}"
PASS SVGFEFuncGElement.toString() is "function SVGFEFuncGElement() {\n    [native code]\n}"
PASS SVGFEFuncBElement.toString() is "function SVGFEFuncBElement() {\n    [native code]\n}"
PASS SVGFEFuncAElement.toString() is "function SVGFEFuncAElement() {\n    [native code]\n}"
PASS SVGFECompositeElement.toString() is "function SVGFECompositeElement() {\n    [native code]\n}"
PASS SVGFEConvolveMatrixElement.toString() is "function SVGFEConvolveMatrixElement() {\n    [native code]\n}"
PASS SVGFEDiffuseLightingElement.toString() is "function SVGFEDiffuseLightingElement() {\n    [native code]\n}"
PASS SVGFEDistantLightElement.toString() is "function SVGFEDistantLightElement() {\n    [native code]\n}"
PASS SVGFEPointLightElement.toString() is "function SVGFEPointLightElement() {\n    [native code]\n}"
PASS SVGFESpotLightElement.toString() is "function SVGFESpotLightElement() {\n    [native code]\n}"
PASS SVGFEDisplacementMapElement.toString() is "function SVGFEDisplacementMapElement() {\n    [native code]\n}"
PASS SVGFEFloodElement.toString() is "function SVGFEFloodElement() {\n    [native code]\n}"
PASS SVGFEGaussianBlurElement.toString() is "function SVGFEGaussianBlurElement() {\n    [native code]\n}"
PASS SVGFEImageElement.toString() is "function SVGFEImageElement() {\n    [native code]\n}"
PASS SVGFEMergeElement.toString() is "function SVGFEMergeElement() {\n    [native code]\n}"
PASS SVGFEMergeNodeElement.toString() is "function SVGFEMergeNodeElement() {\n    [native code]\n}"
PASS SVGFEMorphologyElement.toString() is "function SVGFEMorphologyElement() {\n    [native code]\n}"
PASS SVGFEOffsetElement.toString() is "function SVGFEOffsetElement() {\n    [native code]\n}"
PASS SVGFESpecularLightingElement.toString() is "function SVGFESpecularLightingElement() {\n    [native code]\n}"
PASS SVGFETileElement.toString() is "function SVGFETileElement() {\n    [native code]\n}"
PASS SVGFETurbulenceElement.toString() is "function SVGFETurbulenceElement() {\n    [native code]\n}"
PASS SVGCursorElement.toString() is "function SVGCursorElement() {\n    [native code]\n}"
PASS SVGAElement.toString() is "function SVGAElement() {\n    [native code]\n}"
PASS SVGViewElement.toString() is "function SVGViewElement() {\n    [native code]\n}"
PASS SVGScriptElement.toString() is "function SVGScriptElement() {\n    [native code]\n}"
FAIL SVGEvent.toString() should be function SVGEvent() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGEvent
PASS SVGZoomEvent.toString() is "function SVGZoomEvent() {\n    [native code]\n}"
PASS SVGAnimationElement.toString() is "function SVGAnimationElement() {\n    [native code]\n}"
PASS SVGAnimateElement.toString() is "function SVGAnimateElement() {\n    [native code]\n}"
PASS SVGSetElement.toString() is "function SVGSetElement() {\n    [native code]\n}"
PASS SVGAnimateMotionElement.toString() is "function SVGAnimateMotionElement() {\n    [native code]\n}"
PASS SVGMPathElement.toString() is "function SVGMPathElement() {\n    [native code]\n}"
PASS SVGAnimateColorElement.toString() is "function SVGAnimateColorElement() {\n    [native code]\n}"
PASS SVGAnimateTransformElement.toString() is "function SVGAnimateTransformElement() {\n    [native code]\n}"
PASS SVGFontElement.toString() is "function SVGFontElement() {\n    [native code]\n}"
PASS SVGGlyphElement.toString() is "function SVGGlyphElement() {\n    [native code]\n}"
PASS SVGMissingGlyphElement.toString() is "function SVGMissingGlyphElement() {\n    [native code]\n}"
PASS SVGHKernElement.toString() is "function SVGHKernElement() {\n    [native code]\n}"
PASS SVGVKernElement.toString() is "function SVGVKernElement() {\n    [native code]\n}"
PASS SVGFontFaceElement.toString() is "function SVGFontFaceElement() {\n    [native code]\n}"
PASS SVGFontFaceSrcElement.toString() is "function SVGFontFaceSrcElement() {\n    [native code]\n}"
PASS SVGFontFaceUriElement.toString() is "function SVGFontFaceUriElement() {\n    [native code]\n}"
PASS SVGFontFaceFormatElement.toString() is "function SVGFontFaceFormatElement() {\n    [native code]\n}"
PASS SVGFontFaceNameElement.toString() is "function SVGFontFaceNameElement() {\n    [native code]\n}"
FAIL SVGDefinitionSrcElement.toString() should be function SVGDefinitionSrcElement() {
    [native code]
}. Threw exception ReferenceError: Can't find variable: SVGDefinitionSrcElement
PASS SVGMetadataElement.toString() is "function SVGMetadataElement() {\n    [native code]\n}"
PASS SVGForeignObjectElement.toString() is "function SVGForeignObjectElement() {\n    [native code]\n}"
PASS successfullyParsed is true

TEST COMPLETE

