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