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);
 }