aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/open_file_description.tests.cpp
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-04-26 10:11:24 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-04-26 10:11:24 +0200
commit4e2624b63236fa309c9ecf53a694b6ac9babf4e6 (patch)
treec0103162cb0654955d22aceab63c49becbac2cff /kernel/src/filesystem/open_file_description.tests.cpp
parentc002a6fe53375d8757d43c48c59ac7f327f412b5 (diff)
downloadkernel-4e2624b63236fa309c9ecf53a694b6ac9babf4e6.tar.xz
kernel-4e2624b63236fa309c9ecf53a694b6ac9babf4e6.zip
rename open_file_description to open_file_descriptor
Diffstat (limited to 'kernel/src/filesystem/open_file_description.tests.cpp')
-rw-r--r--kernel/src/filesystem/open_file_description.tests.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/kernel/src/filesystem/open_file_description.tests.cpp b/kernel/src/filesystem/open_file_description.tests.cpp
deleted file mode 100644
index ce3c81a..0000000
--- a/kernel/src/filesystem/open_file_description.tests.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#include <kernel/filesystem/open_file_description.hpp>
-
-#include <kernel/filesystem/vfs.hpp>
-#include <kernel/test_support/filesystem/inode.hpp>
-#include <kernel/test_support/filesystem/storage_boot_module_vfs_fixture.hpp>
-
-#include <kstd/memory>
-#include <kstd/print>
-#include <kstd/vector>
-
-#include <catch2/catch_test_macros.hpp>
-
-#include <cstddef>
-#include <filesystem>
-#include <string_view>
-
-SCENARIO("Open file description construction", "[filesystem][open_file_description]")
-{
- GIVEN("an inode and an open file description for that inode")
- {
- auto inode = kstd::make_shared<kernel::tests::filesystem::inode>();
- auto file_description = kernel::filesystem::open_file_description{inode};
-
- THEN("the initial offset is zero")
- {
- REQUIRE(file_description.offset() == 0);
- }
- }
-}
-
-SCENARIO("Open file description read/write offset management", "[filesystem][open_file_description]")
-{
- GIVEN("an inode that tracks read/write calls and an open file description for that inode")
- {
- auto inode = kstd::make_shared<kernel::tests::filesystem::inode>();
- auto file_description = kernel::filesystem::open_file_description{inode};
-
- THEN("the offset is updated correctly after reads")
- {
- REQUIRE(file_description.read(nullptr, 100) == 100);
- REQUIRE(file_description.offset() == 100);
- REQUIRE(file_description.read(nullptr, 50) == 50);
- REQUIRE(file_description.offset() == 150);
- }
-
- THEN("the offset is updated correctly after writes")
- {
- REQUIRE(file_description.write(nullptr, 200) == 200);
- REQUIRE(file_description.offset() == 200);
- REQUIRE(file_description.write(nullptr, 25) == 25);
- REQUIRE(file_description.offset() == 225);
- }
-
- THEN("reads and writes both update the same offset")
- {
- REQUIRE(file_description.read(nullptr, 10) == 10);
- REQUIRE(file_description.offset() == 10);
- REQUIRE(file_description.write(nullptr, 20) == 20);
- REQUIRE(file_description.offset() == 30);
- REQUIRE(file_description.read(nullptr, 5) == 5);
- REQUIRE(file_description.offset() == 35);
- REQUIRE(file_description.write(nullptr, 15) == 15);
- REQUIRE(file_description.offset() == 50);
- }
- }
-}
-
-SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture,
- "Open file description read with real image", "[filesystem][open_file_description][img]")
-{
- auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "ext2_1KB_fs.img";
-
- GIVEN("an open file description for a file in a real image")
- {
- REQUIRE(std::filesystem::exists(image_path));
- REQUIRE_NOTHROW(setup_modules_from_img_and_init_vfs({"test_img_module"}, {image_path}));
-
- auto & vfs = kernel::filesystem::vfs::get();
- auto dentry = vfs.open("/information/info_1.txt");
- REQUIRE(dentry != nullptr);
- auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode());
-
- THEN("the file can be read and the offset is updated")
- {
- kstd::vector<std::byte> buffer(32);
- auto bytes_read = ofd->read(buffer.data(), buffer.size());
- REQUIRE(bytes_read == 32);
- REQUIRE(ofd->offset() == 32);
-
- std::string_view buffer_as_str{reinterpret_cast<char *>(buffer.data()), static_cast<size_t>(bytes_read)};
- auto const content_end = buffer_as_str.find('\0');
- REQUIRE(buffer_as_str.substr(0, content_end) == "info_1\n");
-
- for (auto i = content_end; i < buffer_as_str.size(); ++i)
- {
- REQUIRE(buffer_as_str[i] == '\0');
- }
- }
-
- THEN("the file can be read multiple times")
- {
- kstd::vector<std::byte> buffer(4);
- auto bytes_read_1 = ofd->read(buffer.data(), buffer.size() / 2);
- REQUIRE(bytes_read_1 == buffer.size() / 2);
- REQUIRE(ofd->offset() == buffer.size() / 2);
-
- auto bytes_read_2 = ofd->read(buffer.data() + buffer.size() / 2, buffer.size() / 2);
- REQUIRE(bytes_read_2 == buffer.size() / 2);
- REQUIRE(ofd->offset() == buffer.size());
-
- std::string_view buffer_as_str{reinterpret_cast<char *>(buffer.data()), bytes_read_1 + bytes_read_2};
- REQUIRE(buffer_as_str == "info");
- }
- }
-}