diff --git a/tests/test_dom_traverse.cpp b/tests/test_dom_traverse.cpp
index 71c08c6..f74a3b8 100644
--- a/tests/test_dom_traverse.cpp
+++ b/tests/test_dom_traverse.cpp
@@ -360,6 +360,7 @@ TEST_XML(dom_node_attribute, "")
CHECK(node.attribute("attr2") == node.last_attribute());
CHECK(node.attribute_w("*tt?[23456789]*") == node.attribute("attr2"));
+ CHECK(node.attribute_w("?") == xml_attribute());
}
TEST_XML(dom_node_next_previous_sibling, "")
@@ -389,7 +390,9 @@ TEST_XML(dom_node_next_previous_sibling, "value1value2value4")
@@ -447,10 +450,14 @@ TEST_XML(dom_node_find_child_by_attribute, "")
@@ -551,6 +558,8 @@ TEST_XML(dom_node_find_node, "")
CHECK(node.find_node(find_predicate_prefix("child2")) == node.last_child());
CHECK(node.find_node(find_predicate_prefix("child")) == node.first_child());
CHECK(doc.find_node(find_predicate_prefix("child")) == node.first_child());
+ CHECK(doc.find_node(find_predicate_prefix("child2")) == node.last_child());
+ CHECK(doc.find_node(find_predicate_prefix("child3")) == xml_node());
}
TEST_XML(dom_node_path, "text")
@@ -582,6 +591,9 @@ TEST_XML(dom_node_first_element_by_path, "text
CHECK(doc.first_element_by_path("/node/child2") == xml_node());
CHECK(doc.first_element_by_path("\\node\\child1", '\\') == doc.child("node").child("child1"));
+
+ CHECK(doc.child("node").first_element_by_path("..") == doc);
+ CHECK(doc.child("node").first_element_by_path(".") == doc.child("node"));
}
struct test_walker: xml_tree_walker
@@ -601,7 +613,7 @@ struct test_walker: xml_tree_walker
log += buffer;
- return ++call_count != stop_count;
+ return ++call_count != stop_count && xml_tree_walker::begin(node);
}
virtual bool for_each(xml_node& node)
@@ -611,7 +623,7 @@ struct test_walker: xml_tree_walker
log += buffer;
- return ++call_count != stop_count;
+ return ++call_count != stop_count && xml_tree_walker::end(node);
}
virtual bool end(xml_node& node)
@@ -635,6 +647,16 @@ TEST_XML(dom_node_traverse, "text")
CHECK(walker.log == "|-1 <=|0 !node=|1 !child=|2 !=text|-1 >=");
}
+TEST_XML(dom_node_traverse_siblings, "text")
+{
+ test_walker walker;
+
+ CHECK(doc.traverse(walker));
+
+ CHECK(walker.call_count == 7);
+ CHECK(walker.log == "|-1 <=|0 !node=|1 !child=|1 !child=|2 !=text|1 !child=|-1 >=");
+}
+
TEST(dom_node_traverse_empty)
{
test_walker walker;