blob: b71ee7b01760c6b8086987200d3c12357a772ccb [file] [log] [blame]
/*
* Copyright (C) 2019 CESNET, https://photonics.cesnet.cz/
*
* Written by Václav Kubernát <kubernat@cesnet.cz>
*
*/
#include "trompeloeil_doctest.hpp"
#include "parser.hpp"
#include "static_schema.hpp"
TEST_CASE("list manipulation")
{
auto schema = std::make_shared<StaticSchema>();
schema->addModule("mod");
schema->addList("/", "mod:list", {"number"});
schema->addLeaf("/mod:list", "mod:number", yang::LeafDataTypes::Int32);
schema->addLeaf("/mod:list", "mod:leafInList", yang::LeafDataTypes::String);
Parser parser(schema);
std::string input;
std::ostringstream errorStream;
SECTION("creating/deleting list instances")
{
dataPath_ expectedPath;
SECTION("mod:list[number=3]")
{
input = "mod:list[number=3]";
auto keys = std::map<std::string, leaf_data_>{
{"number", int32_t{3}}};
expectedPath.m_nodes.push_back(dataNode_{module_{"mod"}, listElement_("list", keys)});
}
command_ parsedCreate = parser.parseCommand("create " + input, errorStream);
command_ parsedDelete = parser.parseCommand("delete " + input, errorStream);
create_ expectedCreate;
expectedCreate.m_path = expectedPath;
delete_ expectedDelete;
expectedDelete.m_path = expectedPath;
REQUIRE(parsedCreate.type() == typeid(create_));
REQUIRE(parsedDelete.type() == typeid(delete_));
REQUIRE(boost::get<create_>(parsedCreate) == expectedCreate);
REQUIRE(boost::get<delete_>(parsedDelete) == expectedDelete);
}
}