Skip to content

Commit 4a76554

Browse files
committed
Move QName parsing tests to the appropriate place
1 parent 2e4119b commit 4a76554

File tree

2 files changed

+27
-41
lines changed

2 files changed

+27
-41
lines changed

src/events/mod.rs

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,47 +1050,6 @@ mod test {
10501050
use super::*;
10511051
use pretty_assertions::assert_eq;
10521052

1053-
#[test]
1054-
fn local_name() {
1055-
use std::str::from_utf8;
1056-
let xml = r#"
1057-
<foo:bus attr='bar'>foobusbar</foo:bus>
1058-
<foo: attr='bar'>foobusbar</foo:>
1059-
<:foo attr='bar'>foobusbar</:foo>
1060-
<foo:bus:baz attr='bar'>foobusbar</foo:bus:baz>
1061-
"#;
1062-
let mut rdr = Reader::from_str(xml);
1063-
let mut buf = Vec::new();
1064-
let mut parsed_local_names = Vec::new();
1065-
loop {
1066-
match rdr
1067-
.read_event_into(&mut buf)
1068-
.expect("unable to read xml event")
1069-
{
1070-
Event::Start(ref e) => parsed_local_names.push(
1071-
from_utf8(e.local_name().as_ref())
1072-
.expect("unable to build str from local_name")
1073-
.to_string(),
1074-
),
1075-
Event::End(ref e) => parsed_local_names.push(
1076-
from_utf8(e.local_name().as_ref())
1077-
.expect("unable to build str from local_name")
1078-
.to_string(),
1079-
),
1080-
Event::Eof => break,
1081-
_ => {}
1082-
}
1083-
}
1084-
assert_eq!(parsed_local_names[0], "bus".to_string());
1085-
assert_eq!(parsed_local_names[1], "bus".to_string());
1086-
assert_eq!(parsed_local_names[2], "".to_string());
1087-
assert_eq!(parsed_local_names[3], "".to_string());
1088-
assert_eq!(parsed_local_names[4], "foo".to_string());
1089-
assert_eq!(parsed_local_names[5], "foo".to_string());
1090-
assert_eq!(parsed_local_names[6], "bus:baz".to_string());
1091-
assert_eq!(parsed_local_names[7], "bus:baz".to_string());
1092-
}
1093-
10941053
#[test]
10951054
fn bytestart_create() {
10961055
let b = BytesStart::owned_name("test");

src/name.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,4 +797,31 @@ mod namespaces {
797797
);
798798
assert_eq!(resolver.find(name, &buffer), Unknown(b"unknown".to_vec()));
799799
}
800+
801+
/// Checks how the QName is decomposed to a prefix and a local name
802+
#[test]
803+
fn prefix_and_local_name() {
804+
let name = QName(b"foo:bus");
805+
assert_eq!(name.prefix(), Some(Prefix(b"foo")));
806+
assert_eq!(name.local_name(), LocalName(b"bus"));
807+
assert_eq!(name.decompose(), (LocalName(b"bus"), Some(Prefix(b"foo"))));
808+
809+
let name = QName(b"foo:");
810+
assert_eq!(name.prefix(), Some(Prefix(b"foo")));
811+
assert_eq!(name.local_name(), LocalName(b""));
812+
assert_eq!(name.decompose(), (LocalName(b""), Some(Prefix(b"foo"))));
813+
814+
let name = QName(b":foo");
815+
assert_eq!(name.prefix(), Some(Prefix(b"")));
816+
assert_eq!(name.local_name(), LocalName(b"foo"));
817+
assert_eq!(name.decompose(), (LocalName(b"foo"), Some(Prefix(b""))));
818+
819+
let name = QName(b"foo:bus:baz");
820+
assert_eq!(name.prefix(), Some(Prefix(b"foo")));
821+
assert_eq!(name.local_name(), LocalName(b"bus:baz"));
822+
assert_eq!(
823+
name.decompose(),
824+
(LocalName(b"bus:baz"), Some(Prefix(b"foo")))
825+
);
826+
}
800827
}

0 commit comments

Comments
 (0)