Don't suggest paths when leaf values are expected
Issue: https://tree.taiga.io/project/jktjkt-netconf-cli/issue/122
Change-Id: I1d5588f07558895277b0fdcc6b45c4ad1def8eaf
diff --git a/tests/path_completion.cpp b/tests/path_completion.cpp
index 6744aed..5adb7ff 100644
--- a/tests/path_completion.cpp
+++ b/tests/path_completion.cpp
@@ -6,10 +6,21 @@
*
*/
+#include <experimental/iterator>
#include "trompeloeil_doctest.h"
#include "parser.hpp"
#include "static_schema.hpp"
+namespace std {
+std::ostream& operator<<(std::ostream& s, const std::set<std::string> set)
+{
+ s << std::endl << "{";
+ std::copy(set.begin(), set.end(), std::experimental::make_ostream_joiner(s, ", "));
+ s << "}" << std::endl;
+ return s;
+}
+}
+
TEST_CASE("path_completion")
{
auto schema = std::make_shared<StaticSchema>();
@@ -29,6 +40,7 @@
schema->addList("", "example:ovocezelenina", {"name"});
schema->addContainer("example:list", "example:contInList");
schema->addList("", "example:twoKeyList", {"number", "name"});
+ schema->addLeaf("", "example:leafInt", yang::LeafDataTypes::Int32);
Parser parser(schema);
std::string input;
std::ostringstream errorStream;
@@ -39,13 +51,13 @@
SECTION("ls ")
{
input = "ls ";
- expected = {"example:ano", "example:anoda", "example:bota", "second:amelie", "example:list", "example:twoKeyList", "example:ovoce", "example:ovocezelenina"};
+ expected = {"example:ano", "example:anoda", "example:bota", "example:leafInt", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList", "second:amelie"};
}
SECTION("ls e")
{
input = "ls e";
- expected = {"example:ano", "example:anoda", "example:bota", "example:list", "example:twoKeyList", "example:ovoce", "example:ovocezelenina"};
+ expected = {"example:ano", "example:anoda", "example:bota", "example:leafInt", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList"};
}
SECTION("ls example:ano")
@@ -69,13 +81,14 @@
SECTION("ls /")
{
input = "ls /";
- expected = {"example:ano", "example:anoda", "example:bota", "second:amelie", "example:list", "example:twoKeyList", "example:ovoce", "example:ovocezelenina"};
+ expected = {"example:ano", "example:anoda", "example:bota", "example:leafInt", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList", "second:amelie"};
}
SECTION("ls /e")
{
input = "ls /e";
- expected = {"example:ano", "example:anoda", "example:bota", "example:list", "example:twoKeyList", "example:ovoce", "example:ovocezelenina"};
+ expected = {"example:ano", "example:anoda", "example:bota", "example:leafInt", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList"};
+
}
SECTION("ls /s")
@@ -202,5 +215,11 @@
}
}
+ SECTION("clear completions when no longer inputting path")
+ {
+ input = "set example:leafInt ";
+ expected = {};
+ }
+
REQUIRE(parser.completeCommand(input, errorStream) == expected);
}