[librsvg: 11/33] Move the remaining test code from librsvg_crate to tests




commit eb736cbb92601d3a2af8592534893e2c22eec878
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Oct 29 17:58:48 2020 -0600

    Move the remaining test code from librsvg_crate to tests

 build.rs                                           |  1 -
 librsvg_crate/tests/standalone/main.rs             |  5 ---
 librsvg_crate/tests/standalone/utils.rs            | 39 -------------------
 src/lib.rs                                         |  4 +-
 .../tests/standalone => tests/src}/api.rs          |  0
 .../tests/standalone => tests/src}/bugs.rs         |  0
 .../src}/intrinsic_dimensions.rs                   |  0
 tests/src/main.rs                                  | 12 ++++++
 .../tests/standalone => tests/src}/primitives.rs   |  0
 tests/src/reference.rs                             |  2 +-
 tests/src/utils.rs                                 | 45 ++++++++++++++++++++--
 11 files changed, 56 insertions(+), 52 deletions(-)
---
diff --git a/build.rs b/build.rs
index 04c68a3d..178935e1 100644
--- a/build.rs
+++ b/build.rs
@@ -78,7 +78,6 @@ fn check_for_pangoft2() {
     }
 }
 
-
 /// Converts an sRGB color value to a linear sRGB color value (undoes the gamma correction).
 ///
 /// The input and the output are supposed to be in the [0, 1] range.
diff --git a/src/lib.rs b/src/lib.rs
index 290d361a..8949ce8c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -85,8 +85,8 @@ mod node;
 #[macro_use]
 mod property_macros;
 
-mod api;
 mod angle;
+mod api;
 mod aspect_ratio;
 mod attributes;
 mod bbox;
@@ -144,5 +144,5 @@ pub mod doctest_only {
     pub use crate::href::is_href;
     pub use crate::href::set_href;
     pub use crate::length::{Both, Horizontal, Length, LengthUnit, Vertical};
-    pub use crate::parsers::{ParseValue, Parse};
+    pub use crate::parsers::{Parse, ParseValue};
 }
diff --git a/librsvg_crate/tests/standalone/api.rs b/tests/src/api.rs
similarity index 100%
rename from librsvg_crate/tests/standalone/api.rs
rename to tests/src/api.rs
diff --git a/librsvg_crate/tests/standalone/bugs.rs b/tests/src/bugs.rs
similarity index 100%
rename from librsvg_crate/tests/standalone/bugs.rs
rename to tests/src/bugs.rs
diff --git a/librsvg_crate/tests/standalone/intrinsic_dimensions.rs b/tests/src/intrinsic_dimensions.rs
similarity index 100%
rename from librsvg_crate/tests/standalone/intrinsic_dimensions.rs
rename to tests/src/intrinsic_dimensions.rs
diff --git a/tests/src/main.rs b/tests/src/main.rs
index cec31e9e..adfb52f2 100644
--- a/tests/src/main.rs
+++ b/tests/src/main.rs
@@ -2,18 +2,30 @@
 #[macro_use]
 extern crate float_cmp;
 
+#[cfg(test)]
+mod api;
+
+#[cfg(test)]
+mod bugs;
+
 #[cfg(test)]
 mod cmdline;
 
 #[cfg(test)]
 mod errors;
 
+#[cfg(test)]
+mod intrinsic_dimensions;
+
 #[cfg(test)]
 mod loading_crash;
 
 #[cfg(test)]
 mod predicates;
 
+#[cfg(test)]
+mod primitives;
+
 #[cfg(test)]
 mod reference;
 
diff --git a/librsvg_crate/tests/standalone/primitives.rs b/tests/src/primitives.rs
similarity index 100%
rename from librsvg_crate/tests/standalone/primitives.rs
rename to tests/src/primitives.rs
diff --git a/tests/src/reference.rs b/tests/src/reference.rs
index 6dc47e59..5dade027 100644
--- a/tests/src/reference.rs
+++ b/tests/src/reference.rs
@@ -11,9 +11,9 @@ use test_generator::test_resources;
 
 use cairo;
 use librsvg::{
-    CairoRenderer, IntrinsicDimensions, Length, Loader,
     surface_utils::shared_surface::{SharedImageSurface, SurfaceType},
     test_utils::compare_to_file,
+    CairoRenderer, IntrinsicDimensions, Length, Loader,
 };
 use std::path::PathBuf;
 
diff --git a/tests/src/utils.rs b/tests/src/utils.rs
index 3892fc34..2e500ff6 100644
--- a/tests/src/utils.rs
+++ b/tests/src/utils.rs
@@ -1,11 +1,51 @@
 #![cfg(test)]
+#![allow(unused)]
 
+use cairo;
+use gio;
+use glib;
 use glib::translate::*;
 use libc;
 use std::env;
 use std::ffi::CString;
 use std::sync::Once;
 
+use librsvg::{
+    surface_utils::shared_surface::{SharedImageSurface, SurfaceType},
+    CairoRenderer, Loader, LoadingError, RenderingError, SvgHandle,
+};
+
+pub fn load_svg(input: &'static [u8]) -> Result<SvgHandle, LoadingError> {
+    let bytes = glib::Bytes::from_static(input);
+    let stream = gio::MemoryInputStream::new_from_bytes(&bytes);
+
+    Loader::new().read_stream(&stream, None::<&gio::File>, None::<&gio::Cancellable>)
+}
+
+#[derive(Copy, Clone)]
+pub struct SurfaceSize(pub i32, pub i32);
+
+pub fn render_document<F: FnOnce(&cairo::Context)>(
+    svg: &SvgHandle,
+    surface_size: SurfaceSize,
+    cr_transform: F,
+    viewport: cairo::Rectangle,
+) -> Result<SharedImageSurface, RenderingError> {
+    let renderer = CairoRenderer::new(svg);
+
+    let SurfaceSize(width, height) = surface_size;
+
+    let output = cairo::ImageSurface::create(cairo::Format::ARgb32, width, height).unwrap();
+
+    let res = {
+        let cr = cairo::Context::new(&output);
+        cr_transform(&cr);
+        Ok(renderer.render_document(&cr, &viewport)?)
+    };
+
+    res.and_then(|_| Ok(SharedImageSurface::wrap(output, SurfaceType::SRgb)?))
+}
+
 #[cfg(have_pangoft2)]
 mod pango_ft2 {
     use super::*;
@@ -37,10 +77,7 @@ mod pango_ft2 {
             let path_cstring = CString::new(*path).unwrap();
 
             if fontconfig::FcConfigAppFontAddFile(config, path_cstring.as_ptr() as *const _) == 0 {
-                panic!(
-                    "Could not load font file {} for tests; aborting",
-                    path,
-                );
+                panic!("Could not load font file {} for tests; aborting", path,);
             }
         }
 


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