#include "turns/domain/participant.hpp" #include #include #include namespace turns::domain::tests { TEST_CASE("A participant") { auto constexpr constructed_name = "Vana Thistletop"; auto constexpr constructed_order = 17; auto instance = participant::create(constructed_name, constructed_order); SECTION("can be created") { REQUIRE(instance); } SECTION("the name can be read") { REQUIRE(instance->name() == constructed_name); } SECTION("the name can be changed") { instance->name("replaced"); REQUIRE(instance->name() == "replaced"); } SECTION("the order can be read") { REQUIRE(instance->order() == constructed_order); } SECTION("the order can be changed") { instance->order(8); REQUIRE(instance->order() == 8); } SECTION("can be compared with another participant") { auto equivalent_instance = participant::create("Equivalent", constructed_order); auto lesser_instance = participant::create("Lesser", constructed_order - 1); auto greater_instance = participant::create("Greater", constructed_order + 1); SECTION("yielding std::partial_ordering::equivalent for itself") { REQUIRE((instance <=> equivalent_instance) == std::partial_ordering::equivalent); } SECTION("yielding std::partial_ordering::equivalent for an equivalent participant") { REQUIRE((instance <=> equivalent_instance) == std::partial_ordering::equivalent); } SECTION("yielding std::partial_ordering::greater for a lesser participant") { REQUIRE((instance <=> lesser_instance) == std::partial_ordering::greater); } SECTION("yielding std::partial_ordering::less for a greater participant") { REQUIRE((instance <=> greater_instance) == std::partial_ordering::less); } } } } // namespace turns::domain::tests