From 0d61f98434b95c754f46c918af5152eda82077cb Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 24 Jul 2024 08:57:21 +0200 Subject: domain/turn_order: fix a round underflow bug --- domain/tests/turn_order_bugs.cpp | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 domain/tests/turn_order_bugs.cpp (limited to 'domain/tests') diff --git a/domain/tests/turn_order_bugs.cpp b/domain/tests/turn_order_bugs.cpp new file mode 100644 index 0000000..418a36c --- /dev/null +++ b/domain/tests/turn_order_bugs.cpp @@ -0,0 +1,42 @@ +#include "turns/domain/participant.hpp" +#include "turns/domain/turn_order.hpp" + +#include + +#include + +namespace turns::domain::tests +{ + /** + * Bug description: + * + * After having stepped according to the step pattern below, tt was possible to step backward often enough to underflow the round number: + * - forward + * - backward + * - forward + */ + SCENARIO("Can step back infinitely", "[turn_order][bug]") + { + GIVEN("a non-empty turn_order") + { + auto instance = turn_order::create(); + + instance->add("A", 0, disposition::neutral); + + WHEN("it is started and then stepped forward, backward, forward") + { + instance->start(); + instance->next(); + instance->previous(); + instance->next(); + + THEN("it is not possible to step backwards more than once") + { + instance->previous(); + instance->previous(); + REQUIRE(instance->round_number() == 0); + } + } + } + } +} // namespace turns::domain::tests \ No newline at end of file -- cgit v1.2.3