mirror of
https://gitlab.com/xmpp-rs/xmpp-rs.git
synced 2024-07-12 22:21:53 +00:00
implemented text, get_child and get_child_mut; added and updated some tests
This commit is contained in:
parent
2d97e2d5d9
commit
663eba6754
1 changed files with 39 additions and 10 deletions
49
src/lib.rs
49
src/lib.rs
|
@ -224,21 +224,38 @@ impl Element {
|
|||
self.children.push(Fork::Text(child.into()));
|
||||
}
|
||||
|
||||
pub fn text(&self) -> &str {
|
||||
unimplemented!()
|
||||
pub fn text(&self) -> String {
|
||||
let mut ret = String::new();
|
||||
for fork in &self.children {
|
||||
if let Fork::Text(ref s) = *fork {
|
||||
ret += s;
|
||||
}
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
pub fn get_child<'a, N: Into<Name<'a>>>(&self, name: N) -> Option<&Element> {
|
||||
unimplemented!()
|
||||
pub fn get_child<N: AsRef<str>, NS: AsRef<str>>(&self, name: N, namespace: NS) -> Option<&Element> {
|
||||
for fork in &self.children {
|
||||
if let Fork::Element(ref e) = *fork {
|
||||
if e.is(name.as_ref(), namespace.as_ref()) {
|
||||
return Some(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
pub fn get_child_mut<'a, N: Into<Name<'a>>>(&mut self, name: N) -> Option<&mut Element> {
|
||||
unimplemented!()
|
||||
pub fn get_child_mut<N: AsRef<str>, NS: AsRef<str>>(&mut self, name: N, namespace: NS) -> Option<&mut Element> {
|
||||
for fork in &mut self.children {
|
||||
if let Fork::Element(ref mut e) = *fork {
|
||||
if e.is(name.as_ref(), namespace.as_ref()) {
|
||||
return Some(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
pub fn into_child<'a, N: Into<Name<'a>>>(self, name: N) -> Option<Element> {
|
||||
unimplemented!()
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Children<'a> {
|
||||
|
@ -352,7 +369,8 @@ mod tests {
|
|||
assert_eq!(elem.name(), "a");
|
||||
assert_eq!(elem.ns(), Some("b"));
|
||||
assert_eq!(elem.attr("c"), Some("d"));
|
||||
assert_eq!(elem.is("a", "b"), true);
|
||||
assert_eq!(elem.attr("x"), None);
|
||||
assert!(elem.is("a", "b"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -363,4 +381,15 @@ mod tests {
|
|||
assert!(iter.next().unwrap().is("child", "child_ns"));
|
||||
assert_eq!(iter.next(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_child_works() {
|
||||
let root = build_test_tree();
|
||||
assert_eq!(root.get_child("child", "inexistent_ns"), None);
|
||||
assert_eq!(root.get_child("not_a_child", "root_ns"), None);
|
||||
assert!(root.get_child("child", "root_ns").unwrap().is("child", "root_ns"));
|
||||
assert!(root.get_child("child", "child_ns").unwrap().is("child", "child_ns"));
|
||||
assert_eq!(root.get_child("child", "root_ns").unwrap().attr("c"), Some("d"));
|
||||
assert_eq!(root.get_child("child", "child_ns").unwrap().attr("d"), Some("e"));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue