diff options
Diffstat (limited to 'kernel/src/filesystem/device_inode.tests.cpp')
| -rw-r--r-- | kernel/src/filesystem/device_inode.tests.cpp | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/kernel/src/filesystem/device_inode.tests.cpp b/kernel/src/filesystem/device_inode.tests.cpp deleted file mode 100644 index 025a22a2..00000000 --- a/kernel/src/filesystem/device_inode.tests.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include <kernel/filesystem/device_inode.hpp> - -#include <kernel/test_support/cpu.hpp> -#include <kernel/test_support/devices/block_device.hpp> -#include <kernel/test_support/devices/character_device.hpp> - -#include <kstd/memory> -#include <kstd/print> -#include <kstd/vector> - -#include <catch2/catch_test_macros.hpp> - -#include <cstddef> -#include <cstdint> - -SCENARIO("Device inode construction", "[filesystem][device_inode]") -{ - GIVEN("a block device") - { - auto device = kstd::make_shared<kernel::tests::devices::block_device>(0, 0, "test_block_device", 512, 3 * 512); - - WHEN("constructing a device inode with the block device") - { - auto inode = kernel::filesystem::device_inode{device}; - - THEN("the device inode has the correct device") - { - REQUIRE(inode.device() == device); - } - - THEN("the device inode has the correct kind") - { - REQUIRE(inode.is_device()); - REQUIRE_FALSE(inode.is_directory()); - REQUIRE_FALSE(inode.is_regular()); - REQUIRE_FALSE(inode.is_symbolic_link()); - } - } - - WHEN("constructing a device inode with a null device") - { - THEN("the constructor panics") - { - REQUIRE_THROWS_AS((kernel::filesystem::device_inode{nullptr}), kernel::tests::cpu::halt); - } - } - } -} - -SCENARIO("Device inode read/write", "[filesystem][device_inode]") -{ - GIVEN("a block device and a device inode for that device") - { - auto device = kstd::make_shared<kernel::tests::devices::block_device>(0, 0, "test_block_device", 512, 3 * 512); - auto inode = kernel::filesystem::device_inode{device}; - - WHEN("writing to the device inode") - { - kstd::vector<uint8_t> write_buffer(1024); - for (size_t i = 0; i < write_buffer.size(); ++i) - { - write_buffer[i] = static_cast<uint8_t>(i % 256); - } - - auto bytes_written = inode.write(write_buffer.data(), 256, write_buffer.size()); - - THEN("the correct number of bytes is written") - { - REQUIRE(bytes_written == 1024); - } - - THEN("the data written matches the data read back from the device inode") - { - kstd::vector<uint8_t> read_buffer(1024); - auto bytes_read = inode.read(read_buffer.data(), 256, read_buffer.size()); - - REQUIRE(bytes_read == write_buffer.size()); - REQUIRE(read_buffer == write_buffer); - } - } - } -} - -SCENARIO("Device inode read/write with a non-block device", "[filesystem][device_inode]") -{ - GIVEN("a non-block device and a device inode for that device") - { - auto device = kstd::make_shared<kernel::tests::devices::character_device>(0, 0, "test_character_device"); - auto inode = kernel::filesystem::device_inode{device}; - - WHEN("reading from the device inode") - { - kstd::vector<uint8_t> read_buffer(512); - THEN("the system panics") - { - REQUIRE_THROWS_AS(inode.read(read_buffer.data(), 0, read_buffer.size()), kernel::tests::cpu::halt); - } - } - - WHEN("writing to the device inode") - { - kstd::vector<uint8_t> write_buffer(512); - THEN("the system panics") - { - REQUIRE_THROWS_AS(inode.write(write_buffer.data(), 0, write_buffer.size()), kernel::tests::cpu::halt); - } - } - } -} |
