diff options
Diffstat (limited to 'tests/xml/parser/driver.cxx')
-rw-r--r-- | tests/xml/parser/driver.cxx | 45 |
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. // |