aboutsummaryrefslogtreecommitdiff
path: root/tests/streaming.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/streaming.rs')
-rw-r--r--tests/streaming.rs103
1 files changed, 0 insertions, 103 deletions
diff --git a/tests/streaming.rs b/tests/streaming.rs
deleted file mode 100644
index a577a00..0000000
--- a/tests/streaming.rs
+++ /dev/null
@@ -1,103 +0,0 @@
-#![forbid(unsafe_code)]
-
-extern crate xml;
-
-use std::io::{Cursor, Write};
-
-use xml::EventReader;
-use xml::reader::ParserConfig;
-use xml::reader::XmlEvent;
-
-macro_rules! assert_match {
- ($actual:expr, $expected:pat) => {
- match $actual {
- $expected => {},
- _ => panic!("assertion failed: `(left matches right)` \
- (left: `{:?}`, right: `{}`", $actual, stringify!($expected))
- }
- };
- ($actual:expr, $expected:pat if $guard:expr) => {
- match $actual {
- $expected if $guard => {},
- _ => panic!("assertion failed: `(left matches right)` \
- (left: `{:?}`, right: `{} if {}`",
- $actual, stringify!($expected), stringify!($guard))
- }
- }
-}
-
-fn write_and_reset_position<W>(c: &mut Cursor<W>, data: &[u8]) where Cursor<W>: Write {
- let p = c.position();
- c.write_all(data).unwrap();
- c.set_position(p);
-}
-
-#[test]
-fn reading_streamed_content() {
- let buf = Cursor::new(b"<root>".to_vec());
- let reader = EventReader::new(buf);
-
- let mut it = reader.into_iter();
-
- assert_match!(it.next(), Some(Ok(XmlEvent::StartDocument { .. })));
- assert_match!(it.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "root");
-
- write_and_reset_position(it.source_mut(), b"<child-1>content</child-1>");
- assert_match!(it.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-1");
- assert_match!(it.next(), Some(Ok(XmlEvent::Characters(ref c))) if c == "content");
- assert_match!(it.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "child-1");
-
- write_and_reset_position(it.source_mut(), b"<child-2/>");
- assert_match!(it.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-2");
- assert_match!(it.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "child-2");
-
- write_and_reset_position(it.source_mut(), b"<child-3/>");
- assert_match!(it.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-3");
- assert_match!(it.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "child-3");
- // doesn't seem to work because of how tags parsing is done
-// write_and_reset_position(it.source_mut(), b"some text");
- // assert_match!(it.next(), Some(Ok(XmlEvent::Characters(ref c))) if c == "some text");
-
- write_and_reset_position(it.source_mut(), b"</root>");
- assert_match!(it.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "root");
- assert_match!(it.next(), Some(Ok(XmlEvent::EndDocument)));
- assert_match!(it.next(), None);
-}
-
-#[test]
-fn reading_streamed_content2() {
- let buf = Cursor::new(b"<root>".to_vec());
- let mut config = ParserConfig::new();
- config.ignore_end_of_stream = true;
- let readerb = EventReader::new_with_config(buf, config);
-
- let mut reader = readerb.into_iter();
-
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartDocument { .. })));
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "root");
-
- write_and_reset_position(reader.source_mut(), b"<child-1>content</child-1>");
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-1");
- assert_match!(reader.next(), Some(Ok(XmlEvent::Characters(ref c))) if c == "content");
- assert_match!(reader.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "child-1");
-
- write_and_reset_position(reader.source_mut(), b"<child-2>content</child-2>");
-
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-2");
- assert_match!(reader.next(), Some(Ok(XmlEvent::Characters(ref c))) if c == "content");
- assert_match!(reader.next(), Some(Ok(XmlEvent::EndElement { ref name })) if name.local_name == "child-2");
- assert_match!(reader.next(), Some(Err(_)));
- write_and_reset_position(reader.source_mut(), b"<child-3></child-3>");
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-3");
- write_and_reset_position(reader.source_mut(), b"<child-4 type='get'");
- match reader.next() {
- None |
- Some(Ok(_)) => {
- panic!("At this point, parser must not detect something.");
- },
- Some(Err(_)) => {}
- };
- write_and_reset_position(reader.source_mut(), b" />");
- assert_match!(reader.next(), Some(Ok(XmlEvent::StartElement { ref name, .. })) if name.local_name == "child-4");
-}
-