#include "kernel/filesystem/mount.hpp" #include "kernel/filesystem/dentry.hpp" #include "kernel/test_support/cpu.hpp" #include "kernel/test_support/filesystem/filesystem.hpp" #include "kernel/test_support/filesystem/inode.hpp" #include #include #include #include SCENARIO("Mount construction", "[filesystem][mount]") { GIVEN("a filesystem and a root dentry") { auto fs = kstd::make_shared(); auto root_inode = kstd::make_shared(); auto root_dentry = kstd::make_shared(nullptr, root_inode, "/"); WHEN("constructing a mount with the filesystem and root dentry") { auto mount = kernel::filesystem::mount{root_dentry, root_dentry, fs, "/", nullptr}; THEN("the mount has the correct filesystem, root dentry, mount dentry, and mount path") { REQUIRE(mount.get_filesystem() == fs); REQUIRE(mount.root_dentry() == root_dentry); REQUIRE(mount.get_mount_dentry() == root_dentry); REQUIRE(mount.get_mount_path() == "/"); } THEN("the mount has no parent mount") { REQUIRE(mount.get_parent_mount() == nullptr); } } WHEN("constructing a mount with a null filesystem") { THEN("the constructor panics") { REQUIRE_THROWS_AS((kernel::filesystem::mount{root_dentry, root_dentry, nullptr, "/", nullptr}), kernel::tests::cpu::halt); } } } }