aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-10-05 16:25:07 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-10-05 16:25:07 +0200
commit6c864832f111c085d28cd30ae96039670ef44c59 (patch)
tree4d22ce8830056d44fb98b361a1f67bf757264a1c
parentd466390c43965fafd1474d3a263afc688ca4ac6a (diff)
downloadkernel-6c864832f111c085d28cd30ae96039670ef44c59.tar.xz
kernel-6c864832f111c085d28cd30ae96039670ef44c59.zip
kstd: ring_buffer: add more zero-capacity tests
-rw-r--r--libs/kstd/kstd/ring_buffer.tests.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/libs/kstd/kstd/ring_buffer.tests.cpp b/libs/kstd/kstd/ring_buffer.tests.cpp
index 2517ff7b..54120b99 100644
--- a/libs/kstd/kstd/ring_buffer.tests.cpp
+++ b/libs/kstd/kstd/ring_buffer.tests.cpp
@@ -2434,6 +2434,53 @@ SCENARIO("Ring Buffer zero capacity", "[kstd][ring_buffer]")
}
}
+ WHEN("constructing by input-iterator-pair constructor with an empty range")
+ {
+ auto first = kstd::tests::test_input_iterator{};
+ auto last = kstd::tests::test_input_iterator{};
+ auto buffer = kstd::ring_buffer<int, 0>{first, last};
+
+ THEN("the buffer is empty")
+ {
+ REQUIRE(buffer.empty());
+ }
+ }
+
+ WHEN("constructing by input-iterator-pair constructor with a range containing 1 element")
+ {
+ THEN("the constructor panics")
+ {
+ std::array<int, 1> source{1};
+ auto first = kstd::tests::test_input_iterator{source.data(), source.size()};
+ auto last = kstd::tests::test_input_iterator{};
+ REQUIRE_THROWS_MATCHES(
+ (kstd::ring_buffer<int, 0>{first, last}), kstd::tests::os_panic,
+ Catch::Matchers::Message("[KSTD] Tried to construct a ring buffer with more elements than it can support."));
+ }
+ }
+
+ WHEN("constructing by forward-iterator-pair constructor with an empty range")
+ {
+ auto source = std::forward_list<int>{};
+ auto buffer = kstd::ring_buffer<int, 0>{source.begin(), source.end()};
+
+ THEN("the buffer is empty")
+ {
+ REQUIRE(buffer.empty());
+ }
+ }
+
+ WHEN("constructing by forward-iterator-pair constructor with a range containing 1 element")
+ {
+ THEN("the constructor panics")
+ {
+ auto source = std::forward_list<int>{1};
+ REQUIRE_THROWS_MATCHES(
+ (kstd::ring_buffer<int, 0>{source.begin(), source.end()}), kstd::tests::os_panic,
+ Catch::Matchers::Message("[KSTD] Tried to construct a ring buffer with more elements than it can support."));
+ }
+ }
+
GIVEN("A zero-capacity buffer of static operation trackers")
{
auto buffer = kstd::ring_buffer<kstd::tests::static_copy_move_tracker, 0>{};