use xml_dom::level2::convert::{
as_attribute_mut, as_document, as_document_fragment_mut, as_element_mut,
};
use xml_dom::level2::ext::convert::as_document_decl_mut;
use xml_dom::level2::ext::dom_impl as ext_dom_impl;
use xml_dom::level2::ext::{XmlDecl, XmlVersion};
use xml_dom::level2::get_implementation;
pub mod common;
#[test]
fn test_display_element() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
common::sub_test("test_display_element", "element_only");
let mut test_node = document.create_element("test").unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
common::sub_test("test_display_element", "element_with_attribute");
{
let element = as_element_mut(&mut test_node).unwrap();
let attribute_node = document.create_attribute_with("test", "data").unwrap();
assert!(element.set_attribute_node(attribute_node).is_ok());
}
let result = format!("{}", test_node);
assert_eq!(result, "");
common::sub_test(
"test_display_element",
"element_with_attribute_and_children",
);
{
let element = as_element_mut(&mut test_node).unwrap();
let attribute_node = document
.create_attribute_ns(common::DC_NS, "dc:creator")
.unwrap();
assert!(element.set_attribute_node(attribute_node).is_ok());
}
let result = format!("{}", test_node);
assert_eq!(result.len(), 39);
assert!(result.starts_with(""));
}
#[test]
fn test_display_attribute() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let mut test_node = document.create_attribute("test").unwrap();
let attribute = as_attribute_mut(&mut test_node).unwrap();
assert!(attribute.set_value("test-data").is_ok());
let result = format!("{}", test_node);
assert_eq!(result, "test=\"test-data\"");
let mut test_node = document
.create_attribute_ns(common::DC_NS, "dc:creator")
.unwrap();
let attribute = as_attribute_mut(&mut test_node).unwrap();
assert!(attribute.set_value("Rose Bush").is_ok());
let result = format!("{}", test_node);
assert_eq!(result, "dc:creator=\"Rose Bush\"");
}
#[test]
fn test_display_text() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let test_node = document.create_text_node("this is textual test data");
let result = format!("{}", test_node);
assert_eq!(result, "this is textual test data");
}
#[test]
fn test_display_cdata() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let test_node = document
.create_cdata_section("this is textual test data")
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_entity_reference() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let test_node = document.create_entity_reference("amp").unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "&");
}
#[test]
fn test_display_processing_instruction() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let test_node = document.create_processing_instruction("foo", None).unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
let test_node = document
.create_processing_instruction("foo", Some("version=\"1.0\""))
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_comment() {
let document_node = common::create_empty_rdf_document();
let document = as_document(&document_node).unwrap();
let test_node = document.create_comment("this is textual test data");
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_document() {
let implementation = get_implementation();
let document_type = implementation
.create_document_type(
"html",
Some("-//W3C//DTD XHTML 1.0 Transitional//EN"),
Some("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"),
)
.unwrap();
let test_node = implementation
.create_document(
Some("http://www.w3.org/1999/xhtml"),
Some("html"),
Some(document_type),
)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_document_with_decl() {
let implementation = get_implementation();
let document_type = implementation
.create_document_type(
"html",
Some("-//W3C//DTD XHTML 1.0 Transitional//EN"),
Some("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"),
)
.unwrap();
let mut test_node = implementation
.create_document(
Some("http://www.w3.org/1999/xhtml"),
Some("html"),
Some(document_type),
)
.unwrap();
let mut_document = as_document_decl_mut(&mut test_node).unwrap();
let xml_decl = XmlDecl::new(XmlVersion::V11, Some("UTF-8".to_string()), None);
let result = mut_document.set_xml_declaration(xml_decl);
assert!(result.is_ok());
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_document_type() {
let implementation = get_implementation();
let test_node = implementation
.create_document_type(
"html",
Some("-//W3C//DTD XHTML 1.0 Transitional//EN"),
Some("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"),
)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
}
#[test]
fn test_display_document_fragment() {
let implementation = get_implementation();
let document_node = implementation
.create_document(Some(common::RDF_NS), Some("rdf:RDF"), None)
.unwrap();
let document = as_document(&document_node).unwrap();
let mut test_node = document.create_document_fragment().unwrap();
let mut_fragment = as_document_fragment_mut(&mut test_node).unwrap();
for name in ["one", "two", "three"] {
let node = document.create_element(name).unwrap();
let _safe_to_ignore = mut_fragment.append_child(node).unwrap();
}
let result = format!("{}", test_node);
assert_eq!(
result,
"]]>"
);
}
#[test]
fn test_display_entity() {
let implementation = get_implementation();
let document_node = implementation
.create_document(Some(common::RDF_NS), Some("rdf:RDF"), None)
.unwrap();
let test_node =
ext_dom_impl::create_internal_entity(document_node.clone(), "name", "My Name").unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
common::sub_test(
"test_display_entity",
"create_entity(node, name, Some, None)",
);
let test_node =
ext_dom_impl::create_entity(document_node.clone(), "name", Some("file-name.xml"), None)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
common::sub_test(
"test_display_entity",
"create_entity(node, name, None, Some)",
);
let test_node =
ext_dom_impl::create_entity(document_node.clone(), "name", None, Some("file-name.xml"))
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
common::sub_test(
"test_display_entity",
"create_entity(node, name, Some, Some)",
);
let test_node = ext_dom_impl::create_entity(
document_node.clone(),
"name",
Some("foo-bar"),
Some("file-name.xml"),
)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(
result,
""
);
// ------------------------------------------------------------
/*
let mut test_node = dom_impl::create_entity(
document_node.clone(),
"name",
Some("foo-bar"),
Some("file-name.xml"),
)
.unwrap();
{
if let Extension::Entity {
i_notation_name, ..
} = &mut test_node.i_extension
{
*i_notation_name = Some("GIF".to_string());
}
}
let result = format!("{}", test_node);
assert_eq!(
result,
""
);
*/
}
#[test]
fn test_display_notation() {
let implementation = get_implementation();
let document_node = implementation
.create_document(Some(common::RDF_NS), Some("rdf:RDF"), None)
.unwrap();
let test_node =
ext_dom_impl::create_notation(document_node.clone(), "name", Some("file-name.xml"), None)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
// ------------------------------------------------------------
let test_node =
ext_dom_impl::create_notation(document_node.clone(), "name", None, Some("file-name.xml"))
.unwrap();
let result = format!("{}", test_node);
assert_eq!(result, "");
// ------------------------------------------------------------
let test_node = ext_dom_impl::create_notation(
document_node.clone(),
"name",
Some("foo-bar"),
Some("file-name.xml"),
)
.unwrap();
let result = format!("{}", test_node);
assert_eq!(
result,
""
);
}