aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/CMakeLists.txt1
-rw-r--r--kernel/include/kernel/test_support/devices/block_device.hpp2
-rw-r--r--kernel/src/devices/block_device.cpp3
-rw-r--r--kernel/src/devices/block_device.tests.cpp46
-rw-r--r--kernel/src/devices/block_device_utils.tests.cpp4
-rw-r--r--kernel/src/test_support/devices/block_device.cpp7
6 files changed, 56 insertions, 7 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
index be21fc3..a360f17 100644
--- a/kernel/CMakeLists.txt
+++ b/kernel/CMakeLists.txt
@@ -132,6 +132,7 @@ else()
# Storage Subsystem Tests
"src/devices/block_device_utils.tests.cpp"
+ "src/devices/block_device.tests.cpp"
"src/devices/storage/ram_disk/device.tests.cpp"
)
add_executable("os::kernel_tests" ALIAS "kernel_tests")
diff --git a/kernel/include/kernel/test_support/devices/block_device.hpp b/kernel/include/kernel/test_support/devices/block_device.hpp
index 2327fc4..110872f 100644
--- a/kernel/include/kernel/test_support/devices/block_device.hpp
+++ b/kernel/include/kernel/test_support/devices/block_device.hpp
@@ -14,7 +14,7 @@ namespace kernel::tests::devices
struct block_device : kernel::devices::block_device
{
- block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size);
+ block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size, size_t initial_size = 0);
auto init() -> bool override;
diff --git a/kernel/src/devices/block_device.cpp b/kernel/src/devices/block_device.cpp
index c006198..b7cb26e 100644
--- a/kernel/src/devices/block_device.cpp
+++ b/kernel/src/devices/block_device.cpp
@@ -1,8 +1,7 @@
#include "kernel/devices/block_device.hpp"
-#include "kapi/system.hpp"
-
#include "kapi/devices/device.hpp"
+#include "kapi/system.hpp"
#include <kstd/string>
diff --git a/kernel/src/devices/block_device.tests.cpp b/kernel/src/devices/block_device.tests.cpp
new file mode 100644
index 0000000..378437e
--- /dev/null
+++ b/kernel/src/devices/block_device.tests.cpp
@@ -0,0 +1,46 @@
+#include "kernel/test_support/devices/block_device.hpp"
+
+#include "kernel/test_support/cpu.hpp"
+
+#include <kstd/memory>
+#include <kstd/print>
+#include <kstd/string>
+#include <kstd/vector>
+
+#include <catch2/catch_test_macros.hpp>
+
+#include <cstddef>
+
+SCENARIO("Block device construction", "[devices][block_device]")
+{
+ GIVEN("parameters for a block device")
+ {
+ size_t major = 1;
+ size_t minor = 0;
+ kstd::string name = "test_block_device";
+ size_t block_size = 512;
+
+ WHEN("constructing a block device")
+ {
+ auto device =
+ kstd::make_shared<kernel::tests::devices::block_device>(major, minor, name, block_size, 3 * block_size);
+
+ THEN("the block device has the correct properties")
+ {
+ REQUIRE(device->major() == major);
+ REQUIRE(device->minor() == minor);
+ REQUIRE(device->name() == name);
+ REQUIRE(device->block_size() == block_size);
+ REQUIRE(device->capacity() == 3 * 512);
+ }
+ }
+
+ WHEN("constructing a block device with zero block size")
+ {
+ THEN("the constructor panics")
+ {
+ REQUIRE_THROWS_AS((kernel::tests::devices::block_device(major, minor, name, 0)), kernel::tests::cpu::halt);
+ }
+ }
+ }
+}
diff --git a/kernel/src/devices/block_device_utils.tests.cpp b/kernel/src/devices/block_device_utils.tests.cpp
index 7ecd202..5f27a9b 100644
--- a/kernel/src/devices/block_device_utils.tests.cpp
+++ b/kernel/src/devices/block_device_utils.tests.cpp
@@ -99,8 +99,8 @@ SCENARIO("writing to a block device using block_device_utils", "[devices][block_
GIVEN("a block device")
{
auto const block_size = 512;
- auto device = kstd::make_shared<kernel::tests::devices::block_device>(0, 0, "test_block_device", block_size);
- device->data.resize(2 * block_size);
+ auto device =
+ kstd::make_shared<kernel::tests::devices::block_device>(0, 0, "test_block_device", block_size, 2 * block_size);
WHEN("writing to the block device using block_device_utils")
{
diff --git a/kernel/src/test_support/devices/block_device.cpp b/kernel/src/test_support/devices/block_device.cpp
index bce415f..d1d4101 100644
--- a/kernel/src/test_support/devices/block_device.cpp
+++ b/kernel/src/test_support/devices/block_device.cpp
@@ -13,9 +13,12 @@
namespace kernel::tests::devices
{
- block_device::block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size)
+ block_device::block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size,
+ size_t initial_size)
: kernel::devices::block_device(major, minor, name, block_size)
- {}
+ {
+ data.resize(initial_size, 0);
+ }
auto block_device::init() -> bool
{