diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-10-05 16:25:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-10-05 16:25:07 +0200 |
| commit | 6c864832f111c085d28cd30ae96039670ef44c59 (patch) | |
| tree | 4d22ce8830056d44fb98b361a1f67bf757264a1c | |
| parent | d466390c43965fafd1474d3a263afc688ca4ac6a (diff) | |
| download | kernel-6c864832f111c085d28cd30ae96039670ef44c59.tar.xz kernel-6c864832f111c085d28cd30ae96039670ef44c59.zip | |
kstd: ring_buffer: add more zero-capacity tests
| -rw-r--r-- | libs/kstd/kstd/ring_buffer.tests.cpp | 47 |
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>{}; |
