diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-05-30 10:58:59 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-14 19:47:00 +0200 |
| commit | 1b24bb01dae10e226a3daaa08e9b47d4724e47a2 (patch) | |
| tree | f8d87c9e5f4fe6d98f650d31893865c16c088c42 /kernel | |
| parent | 63874f63ac91267ed6c9011306b47689f6edbbbd (diff) | |
| download | kernel-1b24bb01dae10e226a3daaa08e9b47d4724e47a2.tar.xz kernel-1b24bb01dae10e226a3daaa08e9b47d4724e47a2.zip | |
Add tests
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kapi/filesystem.tests.cpp | 24 | ||||
| -rw-r--r-- | kernel/kernel/filesystem/open_file_descriptor.tests.cpp | 22 |
2 files changed, 45 insertions, 1 deletions
diff --git a/kernel/kapi/filesystem.tests.cpp b/kernel/kapi/filesystem.tests.cpp index d1e01db6..2c2a8d1e 100644 --- a/kernel/kapi/filesystem.tests.cpp +++ b/kernel/kapi/filesystem.tests.cpp @@ -39,6 +39,30 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Kap REQUIRE(kapi::filesystem::close(fd)); } + THEN("files can be opened, written to, read from and closed again") + { + auto write_fd = kapi::filesystem::open("/information/info_1.txt"); + REQUIRE(write_fd >= 0); + + auto write_buffer = std::vector<std::byte>{std::byte{'H'}, std::byte{'e'}}; + + auto const bytes_written = kapi::filesystem::write(write_fd, write_buffer.data(), write_buffer.size()); + REQUIRE(bytes_written == 2); + + auto read_fd = kapi::filesystem::open("/information/info_1.txt"); + REQUIRE(read_fd >= 0); + + auto read_buffer = std::vector<std::byte>(6); + auto const bytes_read = kapi::filesystem::read(read_fd, read_buffer.data(), read_buffer.size()); + REQUIRE(bytes_read >= 0); + + std::string_view buffer_as_str{reinterpret_cast<char *>(read_buffer.data()), static_cast<size_t>(bytes_read)}; + REQUIRE(buffer_as_str == "Hefo_1"); + + REQUIRE(kapi::filesystem::close(write_fd) == 0); + REQUIRE(kapi::filesystem::close(read_fd) == 0); + } + THEN("files can be opened through absolute symbolic link, read and closed again") { auto fd = kapi::filesystem::open("/symlinks/information_directory_absolute/info_1.txt").value(); diff --git a/kernel/kernel/filesystem/open_file_descriptor.tests.cpp b/kernel/kernel/filesystem/open_file_descriptor.tests.cpp index 06488ba0..daf9327f 100644 --- a/kernel/kernel/filesystem/open_file_descriptor.tests.cpp +++ b/kernel/kernel/filesystem/open_file_descriptor.tests.cpp @@ -95,7 +95,7 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Ope REQUIRE(buffer_as_str == "info_1\n"); } - THEN("the file can be read multiple times") + THEN("the file can be read multiple times and the offset is updated") { kstd::vector<std::byte> buffer(4); auto bytes_read_1 = ofd->read(buffer.data(), buffer.size() / 2); @@ -109,5 +109,25 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Ope std::string_view buffer_as_str{reinterpret_cast<char *>(buffer.data()), *bytes_read_1 + *bytes_read_2}; REQUIRE(buffer_as_str == "info"); } + + THEN("the file can be written to and the offset is updated") + { + auto write_buffer = kstd::vector<std::byte>(12, std::byte{0xAA}); + auto const bytes_written = ofd->write(write_buffer.data(), write_buffer.size()); + REQUIRE(bytes_written == 7); + REQUIRE(ofd->offset() == 7); + } + + THEN("the file can be written to multiple times and the offset is updated") + { + auto write_buffer = kstd::vector<std::byte>(8, std::byte{0xAA}); + auto const bytes_written_1 = ofd->write(write_buffer.data(), write_buffer.size() / 2); + REQUIRE(bytes_written_1 == write_buffer.size() / 2); + REQUIRE(ofd->offset() == write_buffer.size() / 2); + + auto const bytes_written_2 = ofd->write(write_buffer.data() + write_buffer.size() / 2, write_buffer.size() / 2); + REQUIRE(bytes_written_2 == 3); + REQUIRE(ofd->offset() == 7); + } } } |
