aboutsummaryrefslogtreecommitdiff
path: root/tests/xml
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-03-14 10:36:16 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-03-14 10:36:16 +0200
commit17ad2a3fd8933aa49bff4c8ea49963d15cc0db92 (patch)
treee848ab6a86aa64b0be987d0cdc61fe1940280cf6 /tests/xml
parentce3dfdff0d03697bf0c9e0cc9fb45dc6ef7c4ba9 (diff)
Add support for peeking and getting current event in XML parser
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.
//