aboutsummaryrefslogtreecommitdiff
path: root/tests/xml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/xml')
-rw-r--r--tests/xml/parser/driver.cxx45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/xml/parser/driver.cxx b/tests/xml/parser/driver.cxx
index 05c0f35..31d1e97 100644
--- a/tests/xml/parser/driver.cxx
+++ b/tests/xml/parser/driver.cxx
@@ -48,6 +48,51 @@ main ()
{
}
+ // Test peeking and getting the current event.
+ //
+ {
+ istringstream is ("<root x='x'>x<nested/></root>");
+ parser p (is, "peek");
+
+ assert (p.event () == parser::eof);
+
+ assert (p.peek () == parser::start_element);
+ assert (p.next () == parser::start_element);
+ assert (p.event () == parser::start_element);
+
+ assert (p.peek () == parser::start_attribute);
+ assert (p.event () == parser::start_attribute);
+ assert (p.next () == parser::start_attribute);
+
+ assert (p.peek () == parser::characters && p.value () == "x");
+ assert (p.next () == parser::characters && p.value () == "x");
+ assert (p.event () == parser::characters && p.value () == "x");
+
+ assert (p.peek () == parser::end_attribute);
+ assert (p.event () == parser::end_attribute);
+ assert (p.next () == parser::end_attribute);
+
+ assert (p.peek () == parser::characters && p.value () == "x");
+ assert (p.next () == parser::characters && p.value () == "x");
+ assert (p.event () == parser::characters && p.value () == "x");
+
+ assert (p.peek () == parser::start_element);
+ assert (p.next () == parser::start_element);
+ assert (p.event () == parser::start_element);
+
+ assert (p.peek () == parser::end_element);
+ assert (p.next () == parser::end_element);
+ assert (p.event () == parser::end_element);
+
+ assert (p.peek () == parser::end_element);
+ assert (p.next () == parser::end_element);
+ assert (p.event () == parser::end_element);
+
+ assert (p.peek () == parser::eof);
+ assert (p.next () == parser::eof);
+ assert (p.event () == parser::eof);
+ }
+
// Test content processing.
//