blob: d7dfd588d9ee6a06b1adbdb80028d42b12c17213 [file] [log] [blame]
Václav Kubernát989b5de2019-02-20 16:28:35 +01001
2/*
3 * Copyright (C) 2018 CESNET, https://photonics.cesnet.cz/
4 * Copyright (C) 2018 FIT CVUT, https://fit.cvut.cz/
5 *
6 * Written by Václav Kubernát <kubervac@fit.cvut.cz>
7 *
8 */
9
Jan Kundráta33cf082019-03-28 11:55:57 +010010#include "trompeloeil_doctest.h"
Václav Kubernát989b5de2019-02-20 16:28:35 +010011#include "parser.hpp"
12#include "static_schema.hpp"
13
14TEST_CASE("enum completion")
15{
16 auto schema = std::make_shared<StaticSchema>();
17 schema->addModule("mod");
Václav Kubernátefcac932020-01-10 15:26:32 +010018 schema->addContainer("/", "mod:contA");
19 schema->addLeafEnum("/", "mod:leafEnum", {"lala", "lol", "data", "coze"});
20 schema->addLeafEnum("/mod:contA", "mod:leafInCont", {"abc", "def"});
21 schema->addList("/", "mod:list", {"number"});
Václav Kubernát7707cae2020-01-16 12:04:53 +010022 schema->addLeaf("/mod:list", "mod:number", yang::LeafDataTypes::Int32);
Václav Kubernátefcac932020-01-10 15:26:32 +010023 schema->addLeafEnum("/mod:list", "mod:leafInList", {"ano", "anoda", "ne", "katoda"});
Václav Kubernát989b5de2019-02-20 16:28:35 +010024 Parser parser(schema);
25 std::string input;
26 std::ostringstream errorStream;
27
28 std::set<std::string> expected;
29
30 SECTION("set mod:leafEnum ")
31 {
32 input = "set mod:leafEnum ";
33 expected = {"lala", "lol", "data", "coze"};
34 }
35
36 SECTION("set mod:leafEnum c")
37 {
38 input = "set mod:leafEnum c";
39 expected = {"coze"};
40 }
41
42 SECTION("set mod:leafEnum l")
43 {
44 input = "set mod:leafEnum l";
45 expected = {"lala", "lol"};
46 }
47
48
49 SECTION("set mod:contA/leafInCont ")
50 {
51 input = "set mod:contA/leafInCont ";
52 expected = {"abc", "def"};
53 }
54
55 SECTION("set mod:list[number=42]/leafInList ")
56 {
57 input = "set mod:list[number=42]/leafInList ";
58 expected = {"ano", "anoda", "ne", "katoda"};
59 }
60
61 REQUIRE(parser.completeCommand(input, errorStream) == expected);
62}