| <!DOCTYPE html> |
| <html> |
| <head> |
| <link rel="help" href="http://www.w3.org/TR/2013/WD-SVG2-20130618/" /> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Validates the SVG2 inheritance model."); |
| |
| function interfaceName(prototype) |
| { |
| var parts = prototype.toString().split(" "); |
| var lastPart = parts[parts.length - 1]; |
| return lastPart.substring(0, lastPart.length - 10); |
| } |
| |
| function checkParent(type, expectedParent) |
| { |
| // Using shouldBe() would lead to not very readable output here. |
| if (!window[type]) { |
| testFailed(type + " is not defined"); |
| return; |
| } |
| var parentPrototype = window[type].prototype.__proto__; |
| var expectedPrototype = window[expectedParent] ? window[expectedParent].prototype : null; |
| |
| if (expectedPrototype && parentPrototype === expectedPrototype) |
| testPassed(type + " inherits " + expectedParent); |
| else |
| testFailed(type + " should inherit " + expectedParent + " but got " + interfaceName(parentPrototype) + " instead"); |
| } |
| |
| checkParent("SVGAElement", "SVGGraphicsElement"); |
| checkParent("SVGAltGlyphDefElement", "SVGElement"); |
| checkParent("SVGAltGlyphElement", "SVGTextPositioningElement"); |
| checkParent("SVGAltGlyphItemElement", "SVGElement"); |
| checkParent("SVGAngle", "Object"); |
| checkParent("SVGAnimateColorElement", "SVGAnimationElement"); |
| checkParent("SVGAnimateElement", "SVGAnimationElement"); |
| checkParent("SVGAnimateMotionElement", "SVGAnimationElement"); |
| checkParent("SVGAnimateTransformElement", "SVGAnimationElement"); |
| checkParent("SVGAnimatedAngle", "Object"); |
| checkParent("SVGAnimatedBoolean", "Object"); |
| checkParent("SVGAnimatedEnumeration", "Object"); |
| checkParent("SVGAnimatedInteger", "Object"); |
| checkParent("SVGAnimatedLength", "Object"); |
| checkParent("SVGAnimatedLengthList", "Object"); |
| checkParent("SVGAnimatedNumber", "Object"); |
| checkParent("SVGAnimatedNumberList", "Object"); |
| checkParent("SVGAnimatedPathData", "Object"); |
| checkParent("SVGAnimatedPreserveAspectRatio", "Object"); |
| checkParent("SVGAnimatedRect", "Object"); |
| checkParent("SVGAnimatedString", "Object"); |
| checkParent("SVGAnimatedTransformList", "Object"); |
| checkParent("SVGAnimationElement", "SVGElement"); |
| checkParent("SVGCSSRule", "CSSRule"); |
| checkParent("SVGCircleElement", "SVGGeometryElement"); |
| checkParent("SVGClipPathElement", "SVGDefinitionElement"); |
| checkParent("SVGColorProfileElement", "SVGElement"); |
| checkParent("SVGColorProfileRule", "SVGCSSRule"); |
| checkParent("SVGCursorElement", "SVGElement"); |
| checkParent("SVGDefsElement", "SVGGraphicsElement"); |
| checkParent("SVGDescElement", "SVGElement"); |
| checkParent("SVGElement", "Element"); |
| checkParent("SVGEllipseElement", "SVGGeometryElement"); |
| checkParent("SVGFontElement", "SVGElement"); |
| checkParent("SVGFontFaceElement", "SVGElement"); |
| checkParent("SVGFontFaceFormatElement", "SVGElement"); |
| checkParent("SVGFontFaceNameElement", "SVGElement"); |
| checkParent("SVGFontFaceSrcElement", "SVGElement"); |
| checkParent("SVGFontFaceUriElement", "SVGElement"); |
| checkParent("SVGForeignObjectElement", "SVGGraphicsElement"); |
| checkParent("SVGGElement", "SVGGraphicsElement"); |
| checkParent("SVGGeometryElement", "SVGGraphicsElement"); |
| checkParent("SVGGlyphElement", "SVGElement"); |
| checkParent("SVGGlyphRefElement", "SVGElement"); |
| checkParent("SVGGradientElement", "SVGElement"); |
| checkParent("SVGGraphicsElement", "SVGElement"); |
| checkParent("SVGHKernElement", "SVGElement"); |
| checkParent("SVGImageElement", "SVGGraphicsElement"); |
| checkParent("SVGLength", "Object"); |
| checkParent("SVGLengthList", "Object"); |
| checkParent("SVGLineElement", "SVGGeometryElement"); |
| checkParent("SVGLinearGradientElement", "SVGGradientElement"); |
| checkParent("SVGMPathElement", "SVGElement"); |
| checkParent("SVGMarkerElement", "SVGElement"); |
| checkParent("SVGMarkerInstance", "Object"); |
| checkParent("SVGMarkerList", "Object"); |
| checkParent("SVGMaskElement", "SVGDefinitionElement"); |
| checkParent("SVGMatrix", "Object"); |
| checkParent("SVGMeshGradientElement", "SVGGradientElement"); |
| checkParent("SVGMeshPatchElement", "SVGElement"); |
| checkParent("SVGMeshRowElement", "SVGElement"); |
| checkParent("SVGMetadataElement", "SVGElement"); |
| checkParent("SVGMissingGlyphElement", "SVGElement"); |
| checkParent("SVGNumber", "Object"); |
| checkParent("SVGNumberList", "Object"); |
| checkParent("SVGPathElement", "SVGGeometryElement"); |
| checkParent("SVGPathSeg", "Object"); |
| checkParent("SVGPathSegArcAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegArcRel", "SVGPathSeg"); |
| checkParent("SVGPathSegClosePath", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoCubicAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoCubicRel", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoCubicSmoothAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoCubicSmoothRel", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoQuadraticAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoQuadraticRel", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoQuadraticSmoothAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegCurvetoQuadraticSmoothRel", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoHorizontalAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoHorizontalRel", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoRel", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoVerticalAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegLinetoVerticalRel", "SVGPathSeg"); |
| checkParent("SVGPathSegList", "Object"); |
| checkParent("SVGPathSegMovetoAbs", "SVGPathSeg"); |
| checkParent("SVGPathSegMovetoRel", "SVGPathSeg"); |
| checkParent("SVGPatternElement", "SVGElement"); |
| checkParent("SVGPoint", "Object"); |
| checkParent("SVGPointList", "Object"); |
| checkParent("SVGPolygonElement", "SVGGeometryElement"); |
| checkParent("SVGPolylineElement", "SVGGeometryElement"); |
| checkParent("SVGPreserveAspectRatio", "Object"); |
| checkParent("SVGRadialGradientElement", "SVGGradientElement"); |
| checkParent("SVGRect", "Object"); |
| checkParent("SVGRectElement", "SVGGeometryElement"); |
| checkParent("SVGSVGElement", "SVGGraphicsElement"); |
| checkParent("SVGScriptElement", "SVGElement"); |
| checkParent("SVGSetElement", "SVGAnimationElement"); |
| checkParent("SVGStopElement", "SVGElement"); |
| checkParent("SVGStringList", "Object"); |
| checkParent("SVGStyleElement", "SVGElement"); |
| checkParent("SVGSwitchElement", "SVGGraphicsElement"); |
| checkParent("SVGSymbolElement", "SVGElement"); |
| checkParent("SVGTRefElement", "SVGTextPositioningElement"); |
| checkParent("SVGTSpanElement", "SVGTextPositioningElement"); |
| checkParent("SVGTextContentElement", "SVGGraphicsElement"); |
| checkParent("SVGTextElement", "SVGTextPositioningElement"); |
| checkParent("SVGTextPathElement", "SVGTextContentElement"); |
| checkParent("SVGTextPositioningElement", "SVGTextContentElement"); |
| checkParent("SVGTitleElement", "SVGElement"); |
| checkParent("SVGTransform", "Object"); |
| checkParent("SVGTransformList", "Object"); |
| checkParent("SVGUseElement", "SVGGraphicsElement"); |
| checkParent("SVGVKernElement", "SVGElement"); |
| checkParent("SVGViewElement", "SVGElement"); |
| checkParent("SVGViewSpec", "Object"); |
| checkParent("SVGZoomEvent", "UIEvent"); |
| checkParent("TimeEvent", "Event"); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |