[librsvg] Oops, sort the list of supported SVG features so <switch> works



commit 6c3bccd588571c102003fcc2dca67a01623f04e6
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Aug 29 15:15:01 2017 -0500

    Oops, sort the list of supported SVG features so <switch> works
    
    We use the list of supported features with bsearch(), and the list
    was not sorted.
    
    Added struct-cond-03-t.svg from the SVG test suite to this effect.
    The reference PNG is different from the official test suite's original
    one, because we do NOT support the SVG DOM feature.  Still, the test
    file lets us test for <switch> working based on supported feature names.

 rsvg-cond.c                                        |    7 +-
 .../reftests/svg1.1/struct-cond-03-t-ref.png       |  Bin 0 -> 4433 bytes
 .../fixtures/reftests/svg1.1/struct-cond-03-t.svg  |   83 ++++++++++++++++++++
 3 files changed, 87 insertions(+), 3 deletions(-)
---
diff --git a/rsvg-cond.c b/rsvg-cond.c
index 94ada6a..57da4f3 100644
--- a/rsvg-cond.c
+++ b/rsvg-cond.c
@@ -34,12 +34,13 @@
 #include <stdlib.h>
 #include <locale.h>
 
+/* Keep these sorted alphabetically!  These are used with bsearch() */
 static const char *implemented_features[] = {
-    "http://www.w3.org/TR/SVG11/feature#BasicText";,
     "http://www.w3.org/TR/SVG11/feature#BasicFilter";,
     "http://www.w3.org/TR/SVG11/feature#BasicGraphicsAttribute";,
     "http://www.w3.org/TR/SVG11/feature#BasicPaintAttribute";,
     "http://www.w3.org/TR/SVG11/feature#BasicStructure";,
+    "http://www.w3.org/TR/SVG11/feature#BasicText";,
     "http://www.w3.org/TR/SVG11/feature#ConditionalProcessing";,
     "http://www.w3.org/TR/SVG11/feature#ContainerAttribute";,
     "http://www.w3.org/TR/SVG11/feature#Filter";,
@@ -49,11 +50,11 @@ static const char *implemented_features[] = {
     "http://www.w3.org/TR/SVG11/feature#Mask";,
     "http://www.w3.org/TR/SVG11/feature#OpacityAttribute";,
     "http://www.w3.org/TR/SVG11/feature#Pattern";,
+    "http://www.w3.org/TR/SVG11/feature#SVG";,
+    "http://www.w3.org/TR/SVG11/feature#SVG-static";,
     "http://www.w3.org/TR/SVG11/feature#Shape";,
     "http://www.w3.org/TR/SVG11/feature#Structure";,
     "http://www.w3.org/TR/SVG11/feature#Style";,
-    "http://www.w3.org/TR/SVG11/feature#SVG";,
-    "http://www.w3.org/TR/SVG11/feature#SVG-static";,
     "http://www.w3.org/TR/SVG11/feature#View";,
     "org.w3c.svg.static"        /* deprecated SVG 1.0 feature string */
 };
diff --git a/tests/fixtures/reftests/svg1.1/struct-cond-03-t-ref.png 
b/tests/fixtures/reftests/svg1.1/struct-cond-03-t-ref.png
new file mode 100644
index 0000000..9a6a131
Binary files /dev/null and b/tests/fixtures/reftests/svg1.1/struct-cond-03-t-ref.png differ
diff --git a/tests/fixtures/reftests/svg1.1/struct-cond-03-t.svg 
b/tests/fixtures/reftests/svg1.1/struct-cond-03-t.svg
new file mode 100644
index 0000000..93d5490
--- /dev/null
+++ b/tests/fixtures/reftests/svg1.1/struct-cond-03-t.svg
@@ -0,0 +1,83 @@
+<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.7 $" testname="$RCSfile: struct-cond-03-t.svg,v $">
+    <d:testDescription xmlns="http://www.w3.org/1999/xhtml"; 
href="http://www.w3.org/TR/SVG11/struct.html#ConditionalProcessing";>
+        <p>
+          Tests the &lt;switch&gt; element with requiredFeatures.
+        </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>
+        On the bottom half of the test, there is a first switch. 
+        Because SVG Tiny does not support DOM, an SVG Tiny implementation
+        which does not support other SVG Profiles should show a green
+        rectangle. If the application supports the DOM, meaning that
+        it does more than just SVG Tiny, it should show a turquoise rectangle.
+      </p>
+      <p>
+        On the bottom half of the test, there is another switch.
+        The first child has a requiredFeatures set to
+        http://www.w3.org/TR/SVG11/feature#BasicText which all
+        SVG Tiny implementations should support. If the application
+        does, another green rectangle is displayed. Otherwise,
+        a red rectangle shows.
+      </p>
+    </d:passCriteria>
+  </d:SVGTestCase>
+  <title id="test-title">$RCSfile: struct-cond-03-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">
+    <switch>
+      <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#SVGDOM";>
+        <rect x="30" y="20" width="420" height="130" fill="rgb(32, 178, 170)"/>
+        <text x="240" y="100" font-size="20" text-anchor="middle">This viewer does more than SVG Tiny</text>
+      </g>
+      <g>
+        <rect x="30" y="20" width="420" height="130" fill="#0F0"/>
+      </g>
+    </switch>
+
+    <switch transform="translate(0, 140)">
+      <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#BasicText";>
+        <rect x="30" y="20" width="420" height="130" fill="#0F0"/>
+      </g>
+      <g>
+        <rect x="30" y="20" width="420" height="130" fill="#F00"/>
+        <text x="240" y="100" font-size="20" text-anchor="middle">This is not an SVG Tiny Viewer</text>
+      </g>
+    </switch>
+  </g>
+  <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+    <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.7 $</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>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]