[librsvg] Add API test for rsvg_handle_get_geometry_for_element()



commit 8e447829fea413e9b21ba8a0f246b2c20224b2ee
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Mar 27 16:36:21 2019 -0600

    Add API test for rsvg_handle_get_geometry_for_element()

 tests/api.c                     | 41 +++++++++++++++++++++++++++++++++++++++++
 tests/fixtures/api/geometry.svg |  6 ++++++
 2 files changed, 47 insertions(+)
---
diff --git a/tests/api.c b/tests/api.c
index 6e8eb230..54b23a8c 100644
--- a/tests/api.c
+++ b/tests/api.c
@@ -905,6 +905,46 @@ render_cairo_sub (void)
     cairo_surface_destroy (surf);
 }
 
+static void
+get_geometry_for_element (void)
+{
+    char *filename = get_test_filename ("geometry.svg");
+    GError *error = NULL;
+
+    RsvgHandle *handle = rsvg_handle_new_from_file (filename, &error);
+    g_free (filename);
+
+    g_assert (handle != NULL);
+    g_assert (error == NULL);
+
+    RsvgRectangle viewport = { 0.0, 0.0, 100.0, 400.0 };
+    RsvgRectangle ink_rect;
+    RsvgRectangle logical_rect;
+
+    g_assert (!rsvg_handle_get_geometry_for_element (handle, "#nonexistent", viewport,
+                                                     &ink_rect, &logical_rect, &error));
+    g_assert (error != NULL);
+
+    g_error_free (error);
+    error = NULL;
+
+    g_assert (rsvg_handle_get_geometry_for_element (handle, "#two", viewport,
+                                                    &ink_rect, &logical_rect, &error));
+    g_assert (error == NULL);
+
+    g_assert_cmpfloat (ink_rect.x, ==, 5.0);
+    g_assert_cmpfloat (ink_rect.y, ==, 195.0);
+    g_assert_cmpfloat (ink_rect.width, ==, 90.0);
+    g_assert_cmpfloat (ink_rect.height, ==, 110.0);
+
+    g_assert_cmpfloat (logical_rect.x, ==, 10.0);
+    g_assert_cmpfloat (logical_rect.y, ==, 200.0);
+    g_assert_cmpfloat (logical_rect.width, ==, 80.0);
+    g_assert_cmpfloat (logical_rect.height, ==, 100.0);
+
+    g_object_unref (handle);
+}
+
 /* https://gitlab.gnome.org/GNOME/librsvg/issues/385 */
 static void
 no_write_before_close (void)
@@ -1126,6 +1166,7 @@ main (int argc, char **argv)
     g_test_add_func ("/api/detects_cairo_context_in_error", detects_cairo_context_in_error);
     g_test_add_func ("/api/can_draw_to_non_image_surface", can_draw_to_non_image_surface);
     g_test_add_func ("/api/render_cairo_sub", render_cairo_sub);
+    g_test_add_func ("/api/get_geometry_for_element", get_geometry_for_element);
     g_test_add_func ("/api/no_write_before_close", no_write_before_close);
     g_test_add_func ("/api/empty_write_close", empty_write_close);
     g_test_add_func ("/api/cannot_request_external_elements", cannot_request_external_elements);
diff --git a/tests/fixtures/api/geometry.svg b/tests/fixtures/api/geometry.svg
new file mode 100644
index 00000000..b50bf2a9
--- /dev/null
+++ b/tests/fixtures/api/geometry.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"; width="100" height="400" viewBox="0 0 100 400">
+  <rect id="one" x="0" y="0" width="100" height="200" fill="rgb(0,255,0)"/>
+  <rect id="two" x="10" y="200" width="80" height="100" fill="rgb(0,0,255)"
+       stroke-width="10" stroke="black"/>
+</svg>


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