#ifndef PUGIXML_NO_XPATH #include "test.hpp" using namespace pugi; TEST_XML(xpath_paths_abbrev_w3c_1, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para")); CHECK_XPATH_NODESET(n, STR("para")) % 3 % 5; } TEST_XML(xpath_paths_abbrev_w3c_2, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("*")); CHECK_XPATH_NODESET(n, STR("*")) % 3 % 4 % 5; } TEST_XML(xpath_paths_abbrev_w3c_3, "pcdata") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("text()")); CHECK_XPATH_NODESET(n, STR("text()")) % 3 % 5; } TEST_XML(xpath_paths_abbrev_w3c_4, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("@name")); CHECK_XPATH_NODESET(n, STR("@name")) % 3; } TEST_XML(xpath_paths_abbrev_w3c_5, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("@*")); CHECK_XPATH_NODESET(n, STR("@*")) % 3 % 4; } TEST_XML(xpath_paths_abbrev_w3c_6, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[1]")); CHECK_XPATH_NODESET(n, STR("para[1]")) % 3; } TEST_XML(xpath_paths_abbrev_w3c_7, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[last()]")); CHECK_XPATH_NODESET(n, STR("para[last()]")) % 6; } TEST_XML(xpath_paths_abbrev_w3c_8, "") { xml_node c; CHECK_XPATH_NODESET(c, STR("*/para")); CHECK_XPATH_NODESET(doc, STR("*/para")) % 3 % 9; } TEST_XML(xpath_paths_abbrev_w3c_9, "
") { xml_node c; xml_node n = doc.child(STR("doc")).child(STR("chapter")); CHECK_XPATH_NODESET(c, STR("/doc/chapter[5]/section[2]")); CHECK_XPATH_NODESET(n, STR("/doc/chapter[5]/section[2]")) % 9; CHECK_XPATH_NODESET(doc, STR("/doc/chapter[5]/section[2]")) % 9; } TEST_XML(xpath_paths_abbrev_w3c_10, "") { xml_node c; CHECK_XPATH_NODESET(c, STR("chapter//para")); CHECK_XPATH_NODESET(doc, STR("chapter//para")) % 3 % 4 % 5 % 7 % 9; } TEST_XML(xpath_paths_abbrev_w3c_11, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("//para")); CHECK_XPATH_NODESET(n, STR("//para")) % 3 % 4 % 5 % 7 % 9; CHECK_XPATH_NODESET(n.child(STR("para")), STR("//para")) % 3 % 4 % 5 % 7 % 9; } TEST_XML(xpath_paths_abbrev_w3c_12, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("//olist/item")); CHECK_XPATH_NODESET(n, STR("//olist/item")) % 4 % 8 % 9; CHECK_XPATH_NODESET(n.child(STR("olist")), STR("//olist/item")) % 4 % 8 % 9; } TEST_XML(xpath_paths_abbrev_w3c_13, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR(".")); CHECK_XPATH_NODESET(n, STR(".")) % 2; CHECK_XPATH_NODESET(n.child(STR("child")), STR(".")) % 3; } TEST_XML(xpath_paths_abbrev_w3c_14, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR(".//para")); CHECK_XPATH_NODESET(n, STR(".//para")) % 3 % 4 % 5 % 7 % 9; CHECK_XPATH_NODESET(n.child(STR("para")), STR(".//para")) % 4 % 5 % 7; } TEST_XML(xpath_paths_abbrev_w3c_15, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("..")); CHECK_XPATH_NODESET(n, STR("..")) % 1; CHECK_XPATH_NODESET(n.child(STR("child")), STR("..")) % 2; } TEST_XML(xpath_paths_abbrev_w3c_16, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("../@lang")); CHECK_XPATH_NODESET(n, STR("../@lang")); CHECK_XPATH_NODESET(n.child(STR("child")), STR("../@lang")) % 3; } TEST_XML(xpath_paths_abbrev_w3c_17, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[@type=\"warning\"]")); CHECK_XPATH_NODESET(n, STR("para[@type=\"warning\"]")) % 4 % 6 % 11 % 13 % 15; } TEST_XML(xpath_paths_abbrev_w3c_18, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[@type=\"warning\"][5]")); CHECK_XPATH_NODESET(n, STR("para[@type=\"warning\"][5]")) % 15; } TEST_XML(xpath_paths_abbrev_w3c_19a, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[5][@type=\"warning\"]")); CHECK_XPATH_NODESET(n, STR("para[5][@type=\"warning\"]")); } TEST_XML(xpath_paths_abbrev_w3c_19b, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("para[5][@type=\"warning\"]")); CHECK_XPATH_NODESET(n, STR("para[5][@type=\"warning\"]")) % 9; } TEST_XML(xpath_paths_abbrev_w3c_20, "fooIntroductionintroductionIntroductionfoo") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("chapter[title=\"Introduction\"]")); CHECK_XPATH_NODESET(n, STR("chapter[title=\"Introduction\"]")) % 6 % 13; } TEST_XML(xpath_paths_abbrev_w3c_21, "fooIntroductionintroductionIntroductionfoo") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("chapter[title]")); CHECK_XPATH_NODESET(n, STR("chapter[title]")) % 3 % 6 % 9 % 13; } TEST_XML(xpath_paths_abbrev_w3c_22, "") { xml_node c; xml_node n = doc.child(STR("node")); CHECK_XPATH_NODESET(c, STR("employee[@secretary and @assistant]")); CHECK_XPATH_NODESET(n, STR("employee[@secretary and @assistant]")) % 8 % 11; } #endif