aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/rootfs
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem/rootfs')
-rw-r--r--kernel/src/filesystem/rootfs/filesystem.tests.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/kernel/src/filesystem/rootfs/filesystem.tests.cpp b/kernel/src/filesystem/rootfs/filesystem.tests.cpp
new file mode 100644
index 0000000..b013f78
--- /dev/null
+++ b/kernel/src/filesystem/rootfs/filesystem.tests.cpp
@@ -0,0 +1,45 @@
+#include "kernel/filesystem/rootfs/filesystem.hpp"
+
+#include "kernel/filesystem/filesystem.hpp"
+
+#include <kstd/memory>
+#include <kstd/print>
+#include <kstd/vector>
+
+#include <catch2/catch_test_macros.hpp>
+
+SCENARIO("Rootfs filesystem mount and lookup", "[filesystem][rootfs][filesystem]")
+{
+ GIVEN("a mounted rootfs filesystem")
+ {
+ auto fs = kernel::filesystem::rootfs::filesystem{};
+ auto result = fs.mount(nullptr);
+
+ THEN("the filesystem can be mounted successfully")
+ {
+ REQUIRE(result == kernel::filesystem::filesystem::operation_result::success);
+ REQUIRE(fs.root_inode() != nullptr);
+ }
+
+ THEN("looking up the 'dev' directory returns a valid inode")
+ {
+ auto dev_inode = fs.lookup(fs.root_inode(), "dev");
+ REQUIRE(dev_inode != nullptr);
+ REQUIRE(dev_inode->is_directory());
+ }
+
+ THEN("looking up a non-existent directory returns null")
+ {
+ auto non_existent_inode_1 = fs.lookup(fs.root_inode(), "");
+ REQUIRE(non_existent_inode_1 == nullptr);
+ auto non_existent_inode_2 = fs.lookup(fs.root_inode(), "nonexistent");
+ REQUIRE(non_existent_inode_2 == nullptr);
+ }
+
+ THEN("looking up with a null parent inode returns null")
+ {
+ auto result = fs.lookup(nullptr, "dev");
+ REQUIRE(result == nullptr);
+ }
+ }
+}