diff --git a/tests/datastore_access.cpp b/tests/datastore_access.cpp
index 51bcd81..088fc4b 100644
--- a/tests/datastore_access.cpp
+++ b/tests/datastore_access.cpp
@@ -359,6 +359,17 @@
         REQUIRE(datastore.getItems("/example-schema:blob") == expected);
     }
 
+    SECTION("empty")
+    {
+        datastore.setLeaf("/example-schema:dummy", empty_{});
+        REQUIRE_CALL(mock, write("/example-schema:dummy", std::nullopt, ""s));
+        datastore.commitChanges();
+        DatastoreAccess::Tree expected {
+            {"/example-schema:dummy", empty_{}},
+        };
+        REQUIRE(datastore.getItems("/example-schema:dummy") == expected);
+    }
+
     SECTION("operational data")
     {
         MockDataSupplier mockOpsData;
diff --git a/tests/example-schema.yang b/tests/example-schema.yang
index 5d84eda..ef9d02d 100644
--- a/tests/example-schema.yang
+++ b/tests/example-schema.yang
@@ -243,4 +243,8 @@
     leaf blob {
         type binary;
     }
+
+    leaf dummy {
+        type empty;
+    }
 }
diff --git a/tests/leaf_editing.cpp b/tests/leaf_editing.cpp
index 64abbf2..666c975 100644
--- a/tests/leaf_editing.cpp
+++ b/tests/leaf_editing.cpp
@@ -70,7 +70,9 @@
         yang::TypeInfo{createEnum({"wlan0", "wlan1"})},
         yang::TypeInfo{yang::LeafRef{"/mod:portSettings/mod:port", std::make_unique<yang::TypeInfo>(schema->leafType("/mod:portSettings/mod:port"))}},
         yang::TypeInfo{yang::LeafRef{"/mod:activeMappedPort", std::make_unique<yang::TypeInfo>(schema->leafType("/mod:activeMappedPort"))}},
+        yang::TypeInfo{yang::Empty{}},
     }});
+    schema->addLeaf("/", "mod:dummy", yang::Empty{});
 
     Parser parser(schema);
     std::string input;
@@ -325,6 +327,10 @@
                             expected.m_data = enum_("utf3");
                         }
                     }
+                    SECTION("4. empty")
+                    {
+                        expected.m_data = empty_{};
+                    }
                 }
             }
 
@@ -448,6 +454,12 @@
                     expected.m_data = identityRef_{"pizza"};
                 }
             }
+            SECTION("empty")
+            {
+                input = "set mod:dummy ";
+                expected.m_path.m_nodes.push_back(dataNode_{module_{"mod"}, leaf_("dummy")});
+                expected.m_data = empty_{};
+            }
         }
 
         command_ command = parser.parseCommand(input, errorStream);
@@ -584,6 +596,11 @@
             input = "set mod:intOrString true";
         }
 
+        SECTION("no space for empty data")
+        {
+            input = "set mod:dummy";
+        }
+
         REQUIRE_THROWS_AS(parser.parseCommand(input, errorStream), InvalidCommandException);
         REQUIRE(errorStream.str().find(expectedError) != std::string::npos);
     }
diff --git a/tests/mock/sysrepo_subscription.cpp b/tests/mock/sysrepo_subscription.cpp
index 2c0d64b..0d4fe33 100644
--- a/tests/mock/sysrepo_subscription.cpp
+++ b/tests/mock/sysrepo_subscription.cpp
@@ -83,6 +83,11 @@
         v->set(xpath.c_str(), (what.m_prefix->m_name + what.m_value).c_str(), SR_IDENTITYREF_T);
     }
 
+    void operator()(const empty_)
+    {
+        v->set(xpath.c_str(), nullptr, SR_LEAF_EMPTY_T);
+    }
+
     void operator()(const std::string& what)
     {
         v->set(xpath.c_str(), what.c_str());
diff --git a/tests/yang.cpp b/tests/yang.cpp
index 009465b..79bad71 100644
--- a/tests/yang.cpp
+++ b/tests/yang.cpp
@@ -369,9 +369,14 @@
             type leafref {
                 path "../activeMappedPort";
             }
+            type empty;
         }
     }
 
+    leaf dummyLeaf {
+        type empty;
+    }
+
     leaf clockSpeed {
         type int64;
         config false;
@@ -800,6 +805,7 @@
                                 std::make_unique<yang::TypeInfo>(enums)
                         })
                     }},
+                    yang::TypeInfo{yang::Empty{}},
                 }};
             }
 
@@ -844,6 +850,7 @@
                         {"example-schema"s, "obsoleteLeafWithObsoleteType"},
                         {"example-schema"s, "myRpc"},
                         {"example-schema"s, "systemStats"},
+                        {"example-schema"s, "dummyLeaf"},
                         {"example-schema"s, "subLeaf"}};
                 }
 
@@ -893,6 +900,7 @@
                         {"example-schema"s, "clockSpeed"},
                         {"example-schema"s, "deprecatedLeaf"},
                         {"example-schema"s, "direction"},
+                        {"example-schema"s, "dummyLeaf"},
                         {"example-schema"s, "duration"},
                         {"example-schema"s, "ethernet"},
                         {"example-schema"s, "foodDrinkIdentLeaf"},
@@ -951,6 +959,7 @@
                         {boost::none, "/example-schema:deprecatedLeaf"},
                         {boost::none, "/example-schema:direction"},
                         {boost::none, "/example-schema:duration"},
+                        {boost::none, "/example-schema:dummyLeaf"},
                         {boost::none, "/example-schema:foodDrinkIdentLeaf"},
                         {boost::none, "/example-schema:foodIdentLeaf"},
                         {boost::none, "/example-schema:interface/caseEthernet/ethernet"},
