From 9adf67be3a3700c3ae715bb27bad0e1b00412bf1 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> Date: Wed, 7 Jul 2010 17:10:51 +0000 Subject: [PATCH] Fixed strequalrange so that it matches the description (this also fixes first_element_by_path prefix bug), added more first_element_by_path tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@570 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 2 +- src/pugixpath.cpp | 4 +--- tests/test_dom_traverse.cpp | 7 +++++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pugixml.cpp b/src/pugixml.cpp index c84ad2af..0b50fe70 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -134,7 +134,7 @@ namespace pugi if (lhs[i] != rhs[i]) return false; - return true; + return lhs[count] == 0; } // Character set pattern match. diff --git a/src/pugixpath.cpp b/src/pugixpath.cpp index f5663bd5..6239ed2b 100644 --- a/src/pugixpath.cpp +++ b/src/pugixpath.cpp @@ -940,9 +940,7 @@ namespace pugi { size_t length = static_cast<size_t>(end - begin); - if (!impl::strequalrange(other, begin, length)) return false; - - return other[length] == 0; + return impl::strequalrange(other, begin, length); } }; diff --git a/tests/test_dom_traverse.cpp b/tests/test_dom_traverse.cpp index 2e6b5e31..896bf6f3 100644 --- a/tests/test_dom_traverse.cpp +++ b/tests/test_dom_traverse.cpp @@ -596,6 +596,13 @@ TEST_XML(dom_node_first_element_by_path, "<node><child1>text<child2/></child1></ CHECK(doc.child(STR("node")).first_element_by_path(STR("..")) == doc); CHECK(doc.child(STR("node")).first_element_by_path(STR(".")) == doc.child(STR("node"))); + + CHECK(doc.child(STR("node")).first_element_by_path(STR("../node/./child1/../.")) == doc.child(STR("node"))); + + CHECK(doc.child(STR("node")).first_element_by_path(STR("child1")) == doc.child(STR("node")).child(STR("child1"))); + CHECK(doc.child(STR("node")).first_element_by_path(STR("child1/")) == doc.child(STR("node")).child(STR("child1"))); + CHECK(doc.child(STR("node")).first_element_by_path(STR("child")) == xml_node()); + CHECK(doc.child(STR("node")).first_element_by_path(STR("child11")) == xml_node()); } struct test_walker: xml_tree_walker -- GitLab