| |
| /* |
| * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/ |
| * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/ |
| * |
| * Written by Václav Kubernát <kubervac@fit.cvut.cz> |
| * |
| */ |
| |
| #include "trompeloeil_catch.h" |
| #include "ast_commands.hpp" |
| #include "parser.hpp" |
| #include "static_schema.hpp" |
| |
| TEST_CASE("enum completion") |
| { |
| auto schema = std::make_shared<StaticSchema>(); |
| schema->addModule("mod"); |
| schema->addContainer("", "mod:contA"); |
| schema->addLeafEnum("", "mod:leafEnum", {"lala", "lol", "data", "coze"}); |
| schema->addLeafEnum("mod:contA", "mod:leafInCont", {"abc", "def"}); |
| schema->addList("", "mod:list", {"number"}); |
| schema->addLeafEnum("mod:list", "mod:leafInList", {"ano", "anoda", "ne", "katoda"}); |
| Parser parser(schema); |
| std::string input; |
| std::ostringstream errorStream; |
| |
| std::set<std::string> expected; |
| |
| SECTION("set mod:leafEnum ") |
| { |
| input = "set mod:leafEnum "; |
| expected = {"lala", "lol", "data", "coze"}; |
| } |
| |
| SECTION("set mod:leafEnum c") |
| { |
| input = "set mod:leafEnum c"; |
| expected = {"coze"}; |
| } |
| |
| SECTION("set mod:leafEnum l") |
| { |
| input = "set mod:leafEnum l"; |
| expected = {"lala", "lol"}; |
| } |
| |
| |
| SECTION("set mod:contA/leafInCont ") |
| { |
| input = "set mod:contA/leafInCont "; |
| expected = {"abc", "def"}; |
| } |
| |
| SECTION("set mod:list[number=42]/leafInList ") |
| { |
| input = "set mod:list[number=42]/leafInList "; |
| expected = {"ano", "anoda", "ne", "katoda"}; |
| } |
| |
| REQUIRE(parser.completeCommand(input, errorStream) == expected); |
| } |