#include <sled/sled.h>

static constexpr char kXmlA[] =
    R"(<?xml version="1.0"?>
<root>
    <str>hello</str>
    <node id="1">text1</node>
    <node id="2">text2</node>
    <node id="3">text3</node>
</root>
)";

static constexpr char kXmlB[] =
    R"(<?xml version="1.0"?>
<root>
    <level1>
        <level2>
            <node id="1">text1</node>
            <node id="2">text2</node>
            <node id="3">text3</node>
        </level2>
    </level1>
</root>)";

TEST_SUITE("pugixml")
{
    TEST_CASE("xpath query")
    {
        pugi::xml_document doc;
        pugi::xml_parse_result result = doc.load_string(kXmlA);
        CHECK(result);
        pugi::xpath_node_set nodes = doc.select_nodes("//node");
        CHECK_EQ(nodes.size(), 3);
        CHECK_EQ(nodes[0].node().attribute("id").as_int(), 1);
        CHECK_EQ(nodes[1].node().attribute("id").as_int(), 2);
        CHECK_EQ(nodes[2].node().attribute("id").as_int(), 3);
    }

    TEST_CASE("xpath *")
    {
        pugi::xml_document doc;
        pugi::xml_parse_result result = doc.load_string(kXmlA);
        CHECK(result);
        pugi::xpath_node_set nodes = doc.select_nodes("/*/str");
        CHECK(nodes.size() == 1);
        CHECK_EQ(std::string("hello"), nodes[0].node().text().as_string());
    }
}
