#[cfg(all(test, feature = "test-conformance-xmlid"))]
use qualname::{NamespaceMap, NamespacePrefix};
#[cfg(all(test, feature = "test-conformance-xmlid"))]
use std::fs;
#[cfg(all(test, feature = "test-conformance-xmlid"))]
use xrust::item::{Node, NodeType};
#[cfg(all(test, feature = "test-conformance-xmlid"))]
use xrust::parser::{ParseError, xml};
#[cfg(all(test, feature = "test-conformance-xmlid"))]
use xrust::trees::smite::RNode;
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn normal_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/001_normalize.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"te st".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn undecl_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/002_undecl.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"test".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn declar_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/003_dtd.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"id".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn declar_002() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/004_schema.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"id".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn baddcl_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/005_errdtdbad.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_err());
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn dupdup_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/005_errdup.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_err());
}
#[test]
#[ignore]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn baddcl_002() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/006_errschemabad.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_err());
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn dupdup_002() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/007_errdup.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_err());
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn okchar_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/008_ok10.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"anid".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn okchar_002() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/009_ok11.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let para = docchildren.next().unwrap();
assert_eq!(
para.attribute_iter().next().unwrap().to_string(),
"idâ°€ok".to_string()
);
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn xref_001() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/010_okxref.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
}
#[test]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn normal_002() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/011_oknormalize.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let p = docchildren.next().unwrap();
assert_eq!(
p.attribute_iter().next().unwrap().to_string(),
"anid".to_string()
);
}
#[test]
#[ignore]
#[cfg(all(test, feature = "test-conformance-xmlid"))]
fn normal_003() {
let testxml = RNode::new_document();
let nm = NamespaceMap::new();
let parseresult = xml::parse(
testxml,
fs::read_to_string("tests/conformance/xml_id/normwalsh/012_value.xml")
.unwrap()
.as_str(),
Some(|p: &NamespacePrefix| {
nm.namespace_uri(&Some(p.clone()))
.ok_or(ParseError::MissingNameSpace)
}),
);
assert!(parseresult.is_ok());
let doc = parseresult.clone().unwrap().first_child().unwrap();
let mut docchildren = doc
.child_iter()
.filter(|n| n.node_type() == NodeType::Element);
let p = docchildren.next().unwrap();
assert_eq!(
p.attribute_iter().next().unwrap().to_string(),
"anid".to_string()
);
}