diff --git a/tests/leaf_editing.cpp b/tests/leaf_editing.cpp
index 5965110..302c8e4 100644
--- a/tests/leaf_editing.cpp
+++ b/tests/leaf_editing.cpp
@@ -72,6 +72,9 @@
     schema->addLeaf("/", "mod:readonly", yang::Int32{}, yang::AccessType::ReadOnly);
 
     schema->addLeaf("/", "mod:flags", yang::Bits{{"carry", "sign"}});
+    schema->addLeaf("/", "mod:iid", yang::InstanceIdentifier{});
+    schema->addLeaf("/mod:contA", "mod:x", yang::String{});
+    schema->addLeaf("/mod:contA", "mod:iid", yang::InstanceIdentifier{});
 
     Parser parser(schema);
     std::string input;
@@ -509,6 +512,47 @@
             }
         }
 
+        SECTION("instance-identifier") {
+            SECTION("toplevel")
+            {
+                input = "set mod:iid /mod:leafUint32";
+                expected.m_path.m_nodes.emplace_back(module_{"mod"}, leaf_{"iid"});
+                expected.m_data = instanceIdentifier_{"/mod:leafUint32"};
+            }
+
+            SECTION("deep to toplevel")
+            {
+                input = "set mod:contA/iid /mod:leafUint32";
+                expected.m_path.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+                expected.m_path.m_nodes.emplace_back(leaf_{"iid"});
+                expected.m_data = instanceIdentifier_{"/mod:leafUint32"};
+            }
+
+            SECTION("deep to deep unprefixed")
+            {
+                input = "set mod:contA/iid /mod:contA/x";
+                expected.m_path.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+                expected.m_path.m_nodes.emplace_back(leaf_{"iid"});
+                expected.m_data = instanceIdentifier_{"/mod:contA/x"};
+            }
+
+            SECTION("deep to deep mod-prefixed")
+            {
+                input = "set mod:contA/iid /mod:contA/mod:x";
+                expected.m_path.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+                expected.m_path.m_nodes.emplace_back(leaf_{"iid"});
+                expected.m_data = instanceIdentifier_{"/mod:contA/mod:x"};
+            }
+
+            SECTION("absolute when nested")
+            {
+                cwd.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+                input = "set iid /mod:contA/x";
+                expected.m_path.m_nodes.emplace_back(leaf_{"iid"});
+                expected.m_data = instanceIdentifier_{"/mod:contA/x"};
+            }
+        }
+
         parser.changeNode(cwd);
         command_ command = parser.parseCommand(input, errorStream);
         REQUIRE(command.type() == typeid(set_));
@@ -683,6 +727,39 @@
             input = "set mod:flags carry carry";
         }
 
+        SECTION("instance-identifier non-existing node")
+        {
+            input = "set mod:iid /mod:404";
+        }
+
+        SECTION("instance-identifier non-existing node without leading slash")
+        {
+            input = "set mod:iid mod:404";
+        }
+
+        SECTION("instance-identifier node without leading slash")
+        {
+            input = "set mod:iid mod:leafUint32";
+        }
+
+        SECTION("instance-identifier to pseudo-relative unprefixed")
+        {
+            cwd.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+            input = "set iid x";
+        }
+
+        SECTION("instance-identifier to pseudo-relative prefixed")
+        {
+            cwd.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+            input = "set iid mod:x";
+        }
+
+        SECTION("instance-identifier without leading slash when nested")
+        {
+            cwd.m_nodes.emplace_back(module_{"mod"}, container_{"contA"});
+            input = "set iid mod:contA/x";
+        }
+
         parser.changeNode(cwd);
         REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException);
         REQUIRE(errorStream.str().find(expectedError) != std::string::npos);
