Separate tab completion of the initial [ for lists

US: https://tree.taiga.io/project/jktjkt-netconf-cli/us/144
Change-Id: I03ffc2830c62bbf833fb1075e2dbead55b0ca838
diff --git a/tests/path_completion.cpp b/tests/path_completion.cpp
index 1550326..0715639 100644
--- a/tests/path_completion.cpp
+++ b/tests/path_completion.cpp
@@ -66,14 +66,14 @@
         SECTION("ls ")
         {
             input = "ls ";
-            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list[", "example:ovoce[", "example:ovocezelenina[", "example:twoKeyList[", "second:amelie/"};
+            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList", "second:amelie/"};
             expectedContextLength = 0;
         }
 
         SECTION("ls e")
         {
             input = "ls e";
-            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list[", "example:ovoce[", "example:ovocezelenina[", "example:twoKeyList["};
+            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList"};
             expectedContextLength = 1;
         }
 
@@ -101,14 +101,14 @@
         SECTION("ls /")
         {
             input = "ls /";
-            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list[", "example:ovoce[", "example:ovocezelenina[", "example:twoKeyList[", "second:amelie/"};
+            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList", "second:amelie/"};
             expectedContextLength = 0;
         }
 
         SECTION("ls /e")
         {
             input = "ls /e";
-            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list[", "example:ovoce[", "example:ovocezelenina[", "example:twoKeyList["};
+            expectedCompletions = {"example:ano/", "example:anoda/", "example:bota/", "example:leafInt ", "example:list", "example:ovoce", "example:ovocezelenina", "example:twoKeyList"};
             expectedContextLength = 1;
         }
 
@@ -160,7 +160,7 @@
         SECTION("cd example:lis")
         {
             input = "cd example:lis";
-            expectedCompletions = {"example:list["};
+            expectedCompletions = {"example:list"};
             expectedContextLength = 11;
         }
 
@@ -272,9 +272,23 @@
         SECTION("cd example:ovoce")
         {
             input = "cd example:ovoce";
-            expectedCompletions = {"example:ovoce[", "example:ovocezelenina["};
+            expectedCompletions = {"example:ovoce", "example:ovocezelenina"};
             expectedContextLength = 13;
         }
+
+        SECTION("cd example:ovoceze")
+        {
+            input = "cd example:ovoceze";
+            expectedCompletions = {"example:ovocezelenina"};
+            expectedContextLength = 15;
+        }
+
+        SECTION("cd example:ovocezelenina")
+        {
+            input = "cd example:ovocezelenina";
+            expectedCompletions = {"example:ovocezelenina["};
+            expectedContextLength = 21;
+        }
     }
 
     SECTION("clear completions when no longer inputting path")
diff --git a/tests/utils.cpp b/tests/utils.cpp
index c862980..91c61cb 100644
--- a/tests/utils.cpp
+++ b/tests/utils.cpp
@@ -7,20 +7,21 @@
 */
 
 #include "trompeloeil_doctest.hpp"
+#include "completion.hpp"
 #include "utils.hpp"
 
 TEST_CASE("utils")
 {
     SECTION("filterByPrefix")
     {
-        std::set<std::string> set{"ahoj", "coze", "copak", "aha", "polivka"};
+        std::set<Completion> set{{"ahoj"}, {"coze"}, {"copak"}, {"aha"}, {"polivka"}};
 
-        REQUIRE((filterByPrefix(set, "a") == std::set<std::string>{"ahoj", "aha"}));
-        REQUIRE((filterByPrefix(set, "ah") == std::set<std::string>{"ahoj", "aha"}));
-        REQUIRE((filterByPrefix(set, "aho") == std::set<std::string>{"ahoj"}));
-        REQUIRE((filterByPrefix(set, "polivka") == std::set<std::string>{"polivka"}));
-        REQUIRE((filterByPrefix(set, "polivkax") == std::set<std::string>{}));
-        REQUIRE((filterByPrefix(set, "co") == std::set<std::string>{"copak", "coze"}));
+        REQUIRE((filterByPrefix(set, "a") == std::set<Completion>{{"ahoj"}, {"aha"}}));
+        REQUIRE((filterByPrefix(set, "ah") == std::set<Completion>{{"ahoj"}, {"aha"}}));
+        REQUIRE((filterByPrefix(set, "aho") == std::set<Completion>{{"ahoj"}}));
+        REQUIRE((filterByPrefix(set, "polivka") == std::set<Completion>{{"polivka"}}));
+        REQUIRE((filterByPrefix(set, "polivkax") == std::set<Completion>{}));
+        REQUIRE((filterByPrefix(set, "co") == std::set<Completion>{{"copak"}, {"coze"}}));
     }
 
     SECTION("joinPaths") {