[librsvg: 24/30] attributes: add a simple constructor for tests




commit df4a1f402b2252879bb2887b9d3605357419e1d5
Author: Paolo Borelli <pborelli gnome org>
Date:   Sat Dec 26 15:25:01 2020 +0100

    attributes: add a simple constructor for tests
    
    This allows removing unsafe from gradient and pattern tests.

 src/gradient.rs       | 9 ++-------
 src/pattern.rs        | 5 +----
 src/xml/attributes.rs | 5 +++++
 3 files changed, 8 insertions(+), 11 deletions(-)
---
diff --git a/src/gradient.rs b/src/gradient.rs
index e1229db1..b005cf30 100644
--- a/src/gradient.rs
+++ b/src/gradient.rs
@@ -749,7 +749,6 @@ mod tests {
     use super::*;
     use crate::node::{Node, NodeData};
     use markup5ever::{namespace_url, ns, QualName};
-    use std::ptr;
 
     #[test]
     fn parses_spread_method() {
@@ -767,22 +766,18 @@ mod tests {
 
     #[test]
     fn gradient_resolved_from_defaults_is_really_resolved() {
-        let attrs = unsafe { Attributes::new_from_xml2_attributes(0, ptr::null()) };
-
         let node = Node::new(NodeData::new_element(
             &QualName::new(None, ns!(svg), local_name!("linearGradient")),
-            attrs,
+            Attributes::new(),
         ));
 
         let unresolved = borrow_element_as!(node, LinearGradient).get_unresolved(&node);
         let gradient = unresolved.gradient.resolve_from_defaults();
         assert!(gradient.is_resolved());
 
-        let attrs = unsafe { Attributes::new_from_xml2_attributes(0, ptr::null()) };
-
         let node = Node::new(NodeData::new_element(
             &QualName::new(None, ns!(svg), local_name!("radialGradient")),
-            attrs,
+            Attributes::new(),
         ));
 
         let unresolved = borrow_element_as!(node, RadialGradient).get_unresolved(&node);
diff --git a/src/pattern.rs b/src/pattern.rs
index 7432f06a..05d57783 100644
--- a/src/pattern.rs
+++ b/src/pattern.rs
@@ -430,15 +430,12 @@ mod tests {
     use super::*;
     use crate::node::NodeData;
     use markup5ever::{namespace_url, ns, QualName};
-    use std::ptr;
 
     #[test]
     fn pattern_resolved_from_defaults_is_really_resolved() {
-        let attrs = unsafe { Attributes::new_from_xml2_attributes(0, ptr::null()) };
-
         let node = Node::new(NodeData::new_element(
             &QualName::new(None, ns!(svg), local_name!("pattern")),
-            attrs,
+            Attributes::new(),
         ));
 
         let unresolved = borrow_element_as!(node, Pattern).get_unresolved(&node);
diff --git a/src/xml/attributes.rs b/src/xml/attributes.rs
index 20176835..8afa02d8 100644
--- a/src/xml/attributes.rs
+++ b/src/xml/attributes.rs
@@ -26,6 +26,11 @@ pub struct Attributes(Vec<(QualName, AttributeValue)>);
 pub struct AttributesIter<'a>(slice::Iter<'a, (QualName, AttributeValue)>);
 
 impl Attributes {
+    #[cfg(test)]
+    pub fn new() -> Attributes {
+        Attributes(Vec::new())
+    }
+
     /// Creates an iterable `Attributes` from the C array of borrowed C strings.
     ///
     /// With libxml2's SAX parser, the caller's startElementNsSAX2Func


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