[librsvg/librsvg-2.52: 14/18] Compare geometries rectangles with Rect::approx_eq()




commit 89302ba1696d52499be4b57f7f0de614ea87fa3a
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon May 9 17:56:58 2022 -0500

    Compare geometries rectangles with Rect::approx_eq()
    
    Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/697>

 tests/src/geometries.rs | 38 ++++++++++++++++++++++++++------------
 1 file changed, 26 insertions(+), 12 deletions(-)
---
diff --git a/tests/src/geometries.rs b/tests/src/geometries.rs
index 3485b3b80..0c25ebce4 100644
--- a/tests/src/geometries.rs
+++ b/tests/src/geometries.rs
@@ -13,7 +13,7 @@
 //! time.
 
 use anyhow::{Context, Result};
-use librsvg::{CairoRenderer, LengthUnit, Loader};
+use librsvg::{CairoRenderer, LengthUnit, Loader, Rect};
 use serde::Deserialize;
 use std::collections::BTreeMap;
 use std::fs;
@@ -30,13 +30,13 @@ struct Rectangle {
     height: f64,
 }
 
-impl From<Rectangle> for cairo::Rectangle {
-    fn from(r: Rectangle) -> cairo::Rectangle {
-        cairo::Rectangle {
-            x: r.x,
-            y: r.y,
-            width: r.width,
-            height: r.height,
+impl From<Rectangle> for Rect {
+    fn from(r: Rectangle) -> Rect {
+        Rect {
+            x0: r.x,
+            y0: r.y,
+            x1: r.x + r.width,
+            y1: r.y + r.height,
         }
     }
 }
@@ -54,7 +54,21 @@ fn read_geometries(path: &Path) -> Result<Geometries> {
 #[derive(Debug, PartialEq)]
 struct Element {
     id: String,
-    geom: cairo::Rectangle,
+    geom: Rect,
+}
+
+macro_rules! assert_rectangles_approx_eq {
+    ($id:expr, $expected:expr, $computed:expr) => {
+        if !$expected.approx_eq(&$computed) {
+            eprintln!(
+                "assertion failed: rectangles are not approximately equal for id={}",
+                $id
+            );
+            eprintln!("  expected: {:?}", $expected);
+            eprintln!("  computed: {:?}", $computed);
+            panic!();
+        }
+    };
 }
 
 fn test(svg_filename: &str) {
@@ -82,7 +96,7 @@ fn test(svg_filename: &str) {
         println!("id: {}", id);
         let expected = Element {
             id: String::from(id),
-            geom: cairo::Rectangle::from(*expected),
+            geom: Rect::from(*expected),
         };
 
         let viewport = cairo::Rectangle {
@@ -98,10 +112,10 @@ fn test(svg_filename: &str) {
 
         let computed = Element {
             id: String::from(id),
-            geom: geometry,
+            geom: geometry.into(),
         };
 
-        assert_eq!(expected, computed);
+        assert_rectangles_approx_eq!(id, expected.geom, computed.geom);
     }
 }
 


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