use xot::Xot; #[test] fn test_serialize_node() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let node = xot.first_child(xot.document_element(doc).unwrap()).unwrap(); assert_eq!( xot.to_string(node).unwrap(), r#""# ); } #[test] fn test_serialize_node_default_ns() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let node = xot.first_child(xot.document_element(doc).unwrap()).unwrap(); assert_eq!( xot.to_string(node).unwrap(), r#""# ); } #[test] fn test_serialize_node_default_ns_nested() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let node = xot.first_child(xot.document_element(doc).unwrap()).unwrap(); assert_eq!( xot.to_string(node).unwrap(), r#""# ); } #[test] fn test_prefix_ambiguous() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let root_id = xot.document_element(doc).unwrap(); let a_id = xot.first_child(root_id).unwrap(); let ns_x_id = xot.add_namespace("http://example.com/x"); let ns_y_id = xot.add_namespace("http://example.com/y"); let name_x_id = xot.add_name_ns("b", ns_x_id); let name_y_id = xot.add_name_ns("b", ns_y_id); let mut attributes = xot.attributes_mut(a_id); attributes.insert(name_x_id, "X".to_string()); attributes.insert(name_y_id, "Y".to_string()); xot.create_missing_prefixes(doc).unwrap(); assert_eq!( xot.to_string(doc).unwrap(), r#""# ); } #[test] fn test_prefix_ambiguous_no_ns() { let mut xot = Xot::new(); let doc = xot .parse( r#""#, ) .unwrap(); let root_id = xot.document_element(doc).unwrap(); let a_id = xot.first_child(root_id).unwrap(); let a_id = xot.first_child(a_id).unwrap(); let ns_y_id = xot.add_namespace("http://example.com/y"); let name_q_id = xot.add_name_ns("q", ns_y_id); let mut attributes = xot.attributes_mut(a_id); attributes.insert(name_q_id, "Q".to_string()); xot.create_missing_prefixes(doc).unwrap(); assert_eq!( xot.to_string(doc).unwrap(), r#""# ); } #[test] fn test_prefix_ambiguous_default_ns() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let root_id = xot.document_element(doc).unwrap(); let a_id = xot.first_child(root_id).unwrap(); let a_id = xot.first_child(a_id).unwrap(); let ns_y_id = xot.add_namespace("http://example.com/y"); let ns_empty_id = xot.add_namespace(""); let name_r_id = xot.add_name_ns("r", ns_y_id); let name_empty_id = xot.add_name_ns("r", ns_empty_id); let mut attributes = xot.attributes_mut(a_id); attributes.insert(name_r_id, "R".to_string()); attributes.insert(name_empty_id, "R2".to_string()); xot.create_missing_prefixes(doc).unwrap(); assert_eq!( xot.to_string(doc).unwrap(), r#""# ); } #[test] fn test_prefix_ambiguous_default_ns2() { let mut xot = Xot::new(); let doc = xot .parse(r#""#) .unwrap(); let root_id = xot.document_element(doc).unwrap(); let a_id = xot.first_child(root_id).unwrap(); let a_id = xot.first_child(a_id).unwrap(); let ns_y_id = xot.add_namespace("http://example.com/y"); let name_r_id = xot.add_name_ns("r", ns_y_id); let mut attributes = xot.attributes_mut(a_id); attributes.insert(name_r_id, "R".to_string()); xot.create_missing_prefixes(doc).unwrap(); assert_eq!( xot.to_string(doc).unwrap(), r#""# ); } #[test] fn test_serialize_lt() { let mut xot = Xot::new(); let doc = xot.parse(r#"<"#).unwrap(); let serialized = xot.to_string(doc).unwrap(); assert_eq!(serialized, r#"<"#); } #[test] fn test_serialize_gt_by_default() { let mut xot = Xot::new(); let doc = xot.parse(r#">"#).unwrap(); let serialized = xot.to_string(doc).unwrap(); assert_eq!(serialized, r#">"#); } #[test] fn test_do_not_serialize_gt() { let mut xot = Xot::new(); let doc = xot.parse(r#">"#).unwrap(); let serialized = xot .serialize_xml_string( xot::output::xml::Parameters { unescaped_gt: true, ..Default::default() }, doc, ) .unwrap(); assert_eq!(serialized, r#">"#); } #[test] fn test_weird_delimiter() { let mut xot = Xot::new(); let doc = xot.parse(r#"]]>"#).unwrap(); let serialized = xot.to_string(doc).unwrap(); assert_eq!(serialized, r#"]]>"#); } #[test] fn test_weird_delimiter_unescaped() { let mut xot = Xot::new(); let doc = xot.parse(r#"]]>"#).unwrap(); let serialized = xot .serialize_xml_string( xot::output::xml::Parameters { unescaped_gt: true, ..Default::default() }, doc, ) .unwrap(); assert_eq!(serialized, r#"]]>"#); } #[test] fn test_serialize_fragment() { let mut xot = Xot::new(); let fragment = xot.parse_fragment(r#"text"#).unwrap(); let serialized = xot.to_string(fragment).unwrap(); assert_eq!(serialized, r#"text"#); } #[test] fn test_serialize_empty_fragment() { let mut xot = Xot::new(); let fragment = xot.parse_fragment(r#""#).unwrap(); let serialized = xot.to_string(fragment).unwrap(); assert_eq!(serialized, r#""#); } #[test] fn test_serialize_text_fragment() { let mut xot = Xot::new(); let fragment = xot.parse_fragment(r#"text"#).unwrap(); let serialized = xot.to_string(fragment).unwrap(); assert_eq!(serialized, r#"text"#); }