[librsvg: 2/10] Add test for invalid references to non-filter elements




commit e20cc8a02efa29a527aaebc49890825fae5b858a
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Apr 28 12:57:48 2021 -0500

    Add test for invalid references to non-filter elements

 tests/src/filters.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
---
diff --git a/tests/src/filters.rs b/tests/src/filters.rs
index ac8310ec..5b7381bb 100644
--- a/tests/src/filters.rs
+++ b/tests/src/filters.rs
@@ -51,3 +51,50 @@ fn invalid_filter_reference_cancels_filter_chain() {
             "invalid_filter_reference_cancels_filter_chain",
         );
 }
+
+#[test]
+fn non_filter_reference_cancels_filter_chain() {
+    // The <rect> has a filter chain, but one of the URLs does not point to a <filter>.
+    // The whole filter chain should be ignored.
+    let svg = load_svg(
+        br##"<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; width="400" 
height="400">
+  <defs>
+    <filter id="filter">
+      <feColorMatrix type="hueRotate" values="240"/>
+    </filter>
+    <g id="not_a_filter"/>
+  </defs>
+
+  <rect x="100" y="100" width="200" height="200" fill="lime" filter="url(#filter) url(#not_a_filter)"/>
+</svg>
+"##,
+    ).unwrap();
+
+    let output_surf = render_document(
+        &svg,
+        SurfaceSize(400, 400),
+        |_| (),
+        cairo::Rectangle {
+            x: 0.0,
+            y: 0.0,
+            width: 400.0,
+            height: 400.0,
+        },
+    )
+    .unwrap();
+
+    let reference_surf = cairo::ImageSurface::create(cairo::Format::ARgb32, 400, 400).unwrap();
+
+    {
+        let cr = cairo::Context::new(&reference_surf);
+
+        cr.rectangle(100.0, 100.0, 200.0, 200.0);
+        cr.set_source_rgb(0.0, 1.0, 0.0);
+        cr.fill();
+    }
+
+    Reference::from_surface(reference_surf)
+        .compare(&output_surf)
+        .evaluate(&output_surf, "non_filter_reference_cancels_filter_chain");
+}


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