1
1
mirror of https://github.com/exyte/Macaw.git synced 2024-08-15 16:10:39 +03:00

Merge pull request #575 from exyte/fix/399-SVG-test-struct-use-01-t-manual

Fix #399: Add test for struct-use-01-t-manual
This commit is contained in:
Yuri Strot 2019-05-22 18:21:59 +07:00 committed by GitHub
commit b0e85a4b2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 632 additions and 5 deletions

View File

@ -508,6 +508,8 @@
A718CD4F1F45C28F00966E06 /* MDisplayLink_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A718CD4B1F45C28F00966E06 /* MDisplayLink_macOS.swift */; };
A718CD501F45C28F00966E06 /* MView_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A718CD4C1F45C28F00966E06 /* MView_macOS.swift */; };
A718CD521F45C2A400966E06 /* MBezierPath+Extension_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = A718CD511F45C2A400966E06 /* MBezierPath+Extension_macOS.swift */; };
A74C81EC229284790085A832 /* struct-use-01-t-manual.reference in Resources */ = {isa = PBXBuildFile; fileRef = A74C81EA229284780085A832 /* struct-use-01-t-manual.reference */; };
A74C81ED229284790085A832 /* struct-use-01-t-manual.svg in Resources */ = {isa = PBXBuildFile; fileRef = A74C81EB229284780085A832 /* struct-use-01-t-manual.svg */; };
A7E675561EC4213500BD9ECB /* NodeBoundsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E675551EC4213500BD9ECB /* NodeBoundsTests.swift */; };
C410148E1F834D290022EE44 /* style.svg in Resources */ = {isa = PBXBuildFile; fileRef = C410148D1F834D280022EE44 /* style.svg */; };
C4153A8F1F8793DE001BA5EE /* small-logo.png in Resources */ = {isa = PBXBuildFile; fileRef = C4153A8E1F8793DD001BA5EE /* small-logo.png */; };
@ -923,6 +925,8 @@
A718CD4B1F45C28F00966E06 /* MDisplayLink_macOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MDisplayLink_macOS.swift; path = Source/platform/macOS/MDisplayLink_macOS.swift; sourceTree = SOURCE_ROOT; };
A718CD4C1F45C28F00966E06 /* MView_macOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MView_macOS.swift; path = Source/platform/macOS/MView_macOS.swift; sourceTree = SOURCE_ROOT; };
A718CD511F45C2A400966E06 /* MBezierPath+Extension_macOS.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "MBezierPath+Extension_macOS.swift"; path = "Source/platform/macOS/MBezierPath+Extension_macOS.swift"; sourceTree = SOURCE_ROOT; };
A74C81EA229284780085A832 /* struct-use-01-t-manual.reference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "struct-use-01-t-manual.reference"; sourceTree = "<group>"; };
A74C81EB229284780085A832 /* struct-use-01-t-manual.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "struct-use-01-t-manual.svg"; sourceTree = "<group>"; };
A7E675551EC4213500BD9ECB /* NodeBoundsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = NodeBoundsTests.swift; path = Bounds/NodeBoundsTests.swift; sourceTree = "<group>"; };
C410148D1F834D280022EE44 /* style.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = style.svg; sourceTree = "<group>"; };
C4153A8E1F8793DD001BA5EE /* small-logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "small-logo.png"; sourceTree = "<group>"; };
@ -1544,6 +1548,8 @@
5B1AE1C420B6A669007EECCB /* struct-frag-06-t-manual.svg */,
5B1AE1CA20B6A669007EECCB /* struct-group-01-t-manual.reference */,
5B1AE22420B6A669007EECCB /* struct-group-01-t-manual.svg */,
A74C81EA229284780085A832 /* struct-use-01-t-manual.reference */,
A74C81EB229284780085A832 /* struct-use-01-t-manual.svg */,
5B1AE1BB20B6A669007EECCB /* struct-use-03-t-manual.reference */,
5B1AE20120B6A669007EECCB /* struct-use-03-t-manual.svg */,
5B1AE18D20B6A669007EECCB /* struct-use-12-f-manual.reference */,
@ -1762,6 +1768,7 @@
57CAB1361D7832E000FD8E47 /* triangle.svg in Resources */,
5B7E79CF20CBE69700C50BCF /* masking-path-02-b-manual.svg in Resources */,
5BFEF5D620BC1C1F008DAC11 /* paths-data-18-f-manual.svg in Resources */,
A74C81ED229284790085A832 /* struct-use-01-t-manual.svg in Resources */,
5B1AE23620B6A669007EECCB /* paths-data-07-t-manual.svg in Resources */,
5B1AE27720B6A669007EECCB /* coords-trans-03-t-manual.reference in Resources */,
5B1AE26420B6A669007EECCB /* painting-fill-03-t-manual.svg in Resources */,
@ -1906,6 +1913,7 @@
5B1AE23820B6A669007EECCB /* color-prop-01-b-manual.svg in Resources */,
5B1AE24620B6A669007EECCB /* painting-control-01-f-manual.svg in Resources */,
5B1AE2B120B6A669007EECCB /* color-prop-03-t-manual.svg in Resources */,
A74C81EC229284790085A832 /* struct-use-01-t-manual.reference in Resources */,
5B1AE23B20B6A669007EECCB /* struct-use-12-f-manual.reference in Resources */,
5B1AE29F20B6A669007EECCB /* painting-stroke-09-t-manual.svg in Resources */,
5B1AE27D20B6A669007EECCB /* shapes-polygon-03-t-manual.svg in Resources */,

View File

@ -473,14 +473,18 @@ class MacawSVGTests: XCTestCase {
validateJSON("struct-frag-03-t-manual")
}
func testStructUse12() {
validateJSON("struct-use-12-f-manual")
func testStructUse01() {
validateJSON("struct-use-01-t-manual")
}
func testStructUse03() {
validateJSON("struct-use-03-t-manual")
}
func testStructUse12() {
validateJSON("struct-use-12-f-manual")
}
func testColorProp03() {
validateJSON("color-prop-03-t-manual")
}

View File

@ -10,12 +10,12 @@ There are [521 SVG tests](https://github.com/web-platform-tests/wpt/tree/master/
* [switch/object](https://www.w3.org/TR/SVG11/backward.html) (7)
The rest 306 tests can be split into following categories:
* 30.7% passed (94)
* 31.0% passed (95)
* 14.1% filters (43) [#390](https://github.com/exyte/Macaw/issues/390)
* 7.8% images (24) [wpt issue](https://github.com/web-platform-tests/wpt/issues/11178)
* 2.6% markers (8) [#392](https://github.com/exyte/Macaw/issues/392)
* 19.9% text (61) [#391](https://github.com/exyte/Macaw/issues/391)
* 25.2% blocked by issues (77)
* 24.8% blocked by issues (76)
Status of each test:
@ -274,7 +274,8 @@ Status of each test:
|[struct-image-19-f-manual](w3cSVGTests/struct-image-19-f-manual.svg) | [wpt issue](https://github.com/web-platform-tests/wpt/issues/11178) |
|[struct-svg-03-f-manual](w3cSVGTests/struct-svg-03-f-manual.svg) | [#344](https://github.com/exyte/Macaw/issues/344) |
|[struct-symbol-01-b-manual](w3cSVGTests/struct-symbol-01-b-manual.svg) | [#398](https://github.com/exyte/Macaw/issues/398) |
|[struct-use-01-t-manual](w3cSVGTests/struct-use-01-t-manual.svg) | [#399](https://github.com/exyte/Macaw/issues/399) |
|[struct-use-01-t-manual](w3cSVGTests/struct-use-01-t-manual.svg) |
|[struct-use-03-t-manual](w3cSVGTests/struct-use-03-t-manual.svg) | ✅ |
|[struct-use-09-b-manual](w3cSVGTests/struct-use-09-b-manual.svg) | [#398](https://github.com/exyte/Macaw/issues/398) |
|[struct-use-12-f-manual](w3cSVGTests/struct-use-12-f-manual.svg) | ✅ |

View File

@ -0,0 +1,503 @@
{
"contents" : [
{
"contents" : [
{
"contents" : [
{
"contents" : [
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"text" : "<rect>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 30",
"text" : "<circle>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 60",
"text" : "<ellipse>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 90",
"text" : "<line>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 120",
"text" : "<polyline>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 150",
"text" : "<polygon>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 180",
"text" : "<path>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 210",
"text" : "<image>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 240",
"text" : "<text>"
}
],
"node" : "Group",
"place" : "1, 0, 0, 1, 130, 40"
},
{
"contents" : [
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"text" : "<g>"
},
{
"align" : "max",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 20,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 30",
"text" : "<use>"
}
],
"node" : "Group",
"place" : "1, 0, 0, 1, 310, 40"
}
],
"node" : "Group"
},
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"h" : 20,
"type" : "Rect",
"w" : 20,
"x" : 0,
"y" : 0
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"cx" : 10,
"cy" : 10,
"r" : 10,
"type" : "Circle"
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 30"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"ellipse" : {
"cx" : 10,
"cy" : 10,
"rx" : 10,
"ry" : 10,
"type" : "Ellipse"
},
"extent" : 6.2831853071795862,
"shift" : 0,
"type" : "Arc"
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 60"
},
{
"fill" : {
"type" : "Color",
"val" : 0
},
"form" : {
"type" : "Line",
"x1" : 0,
"x2" : 20,
"y1" : 10,
"y2" : 10
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 90",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 2
}
},
{
"form" : {
"points" : [
0,
0,
20,
0,
20,
20
],
"type" : "Polyline"
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 120",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 65280
},
"join" : "miter",
"width" : 2
}
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"points" : [
0,
0,
20,
0,
20,
20,
0,
20,
0,
0
],
"type" : "Polygon"
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 150"
},
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"segments" : [
{
"data" : [
0,
0
],
"type" : "M"
},
{
"data" : [
20,
0
],
"type" : "L"
},
{
"data" : [
20,
20
],
"type" : "L"
},
{
"data" : [
0,
20
],
"type" : "L"
},
{
"data" : [
],
"type" : "z"
}
],
"type" : "Path"
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 0, 180"
},
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 65280
},
"font" : {
"name" : "FreeSerif,serif",
"size" : 25,
"weight" : "bold"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 0, 260",
"text" : "Text"
},
{
"contents" : [
{
"fill" : {
"type" : "Color",
"val" : 65280
},
"form" : {
"h" : 20,
"type" : "Rect",
"w" : 10,
"x" : 0,
"y" : 0
},
"node" : "Shape"
},
{
"fill" : {
"type" : "Color",
"val" : 32768
},
"form" : {
"h" : 20,
"type" : "Rect",
"w" : 10,
"x" : 10,
"y" : 0
},
"node" : "Shape"
}
],
"node" : "Group",
"place" : "1, 0, 0, 1, 180, 0"
},
{
"fill" : {
"type" : "Color",
"val" : 52224
},
"form" : {
"h" : 20,
"type" : "Rect",
"w" : 20,
"x" : 0,
"y" : 0
},
"node" : "Shape",
"place" : "1, 0, 0, 1, 180, 30"
}
],
"node" : "Group",
"place" : "1, 0, 0, 1, 150, 25"
}
],
"node" : "Group"
},
{
"contents" : [
{
"align" : "min",
"baseline" : "bottom",
"fill" : {
"type" : "Color",
"val" : 0
},
"font" : {
"name" : "SVGFreeSansASCII,sans-serif",
"size" : 32,
"weight" : "normal"
},
"node" : "Text",
"place" : "1, 0, 0, 1, 10, 340",
"text" : "$Revision: 1.5 $"
}
],
"node" : "Group"
},
{
"form" : {
"h" : 358,
"type" : "Rect",
"w" : 478,
"x" : 1,
"y" : 1
},
"node" : "Shape",
"stroke" : {
"cap" : "butt",
"dashes" : [
],
"fill" : {
"type" : "Color",
"val" : 0
},
"join" : "miter",
"width" : 1
}
}
],
"layout" : {
"scalingMode" : "meet",
"svgSize" : {
"height" : "100.0%",
"width" : "100.0%"
},
"viewBox" : {
"h" : 360,
"type" : "Rect",
"w" : 480,
"x" : 0,
"y" : 0
},
"xAligningMode" : "mid",
"yAligningMode" : "mid"
},
"node" : "Canvas"
}

View File

@ -0,0 +1,111 @@
<svg version="1.1" baseProfile="tiny" id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= SVG 1.1 2nd Edition Test Case =-->
<!--======================================================================-->
<!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
<!--= Informatics and Mathematics (ERCIM), Keio University). =-->
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
template-version="1.4" reviewer="CN" author="VH" status="accepted"
version="$Revision: 1.5 $" testname="$RCSfile: struct-use-01-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#UseElement">
<p>
The purpose of this test is to validate proper handling of
the use element. In particular, the test checks the proper inheritance
of properties through the shadow tree (rather than through the document
tree).
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test should display various elements in different shades of green.
If an element is not displayed in green, but in red fill and/or yellow
stroke, then it is in error.
</p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: struct-use-01-t.svg,v $</title>
<defs>
<font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
<font-face-src>
<font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
</font-face-src>
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<defs>
<font-face font-family="FreeSerif" unicode-range="U+0020-U+00FF">
<font-face-src>
<font-face-uri xlink:href="../resources/FreeSerifBoldItalic.svg#FreeSerifBoldItalic"/>
</font-face-src>
</font-face>
<g fill="red" stroke="yellow" stroke-width="3">
<rect id="usedRect" width="20" height="20"/>
<circle id="usedCircle" cx="10" cy="10" r="10"/>
<ellipse id="usedEllipse" cx="10" cy="10" rx="10" ry="10"/>
<line id="usedLine" x1="0" y1="10" x2="20" y2="10"/>
<path id="usedPath" d="M 0 0 L 20 0 L 20 20 L 0 20 Z"/>
<polygon id="usedPolygon" points="0,0 20,0 20,20 0,20 0 0"/>
<polyline id="usedPolyline" points="0,0 20,0 20,20"/>
<g id="usedG">
<rect width="10" height="20"/>
<rect x="10" width="10" height="20" fill="rgb(0,128,0)"/>
</g>
<use id="usedUse" xlink:href="#usedRect"/>
<image id="usedImage" xlink:href="../images/20x20.png" width="20" height="20"/>
<text id="usedText">Text</text>
</g>
</defs>
<g>
<g id="labels" transform="translate(130, 40)" font-size="20" text-anchor="end">
<text>&lt;rect&gt;</text>
<text y="30">&lt;circle&gt;</text>
<text y="60">&lt;ellipse&gt;</text>
<text y="90">&lt;line&gt;</text>
<text y="120">&lt;polyline&gt;</text>
<text y="150">&lt;polygon&gt;</text>
<text y="180">&lt;path&gt;</text>
<text y="210">&lt;image&gt;</text>
<text y="240">&lt;text&gt;</text>
</g>
<g id="labelsColumn2" transform="translate(310, 40)" font-size="20" text-anchor="end">
<text>&lt;g&gt;</text>
<text y="30">&lt;use&gt;</text>
</g>
</g>
<g transform="translate(150, 25)">
<use xlink:href="#usedRect" fill="#0F0"/>
<use y="30" xlink:href="#usedCircle" fill="#0F0"/>
<use y="60" xlink:href="#usedEllipse" fill="#0F0"/>
<use y="90" xlink:href="#usedLine" stroke="#0F0" stroke-width="2"/>
<use y="120" xlink:href="#usedPolyline" stroke="#0F0" stroke-width="2" fill="none"/>
<use y="150" xlink:href="#usedPolygon" fill="#0F0"/>
<use y="180" xlink:href="#usedPath" fill="#0F0"/>
<use y="210" xlink:href="#usedImage" fill="#FF0"/>
<use y="260" xlink:href="#usedText" fill="#0F0" font-weight="bold" font-size="25" font-style="italic" font-family="FreeSerif,serif"/>
<use x="180" y="0" xlink:href="#usedG" fill="#0F0"/>
<use x="180" y="30" xlink:href="#usedUse" fill="#0c0"/>
</g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.5 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
<!-- comment out this watermark once the test is approved -->
<!--<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB