diff options
Diffstat (limited to 'nihil.flagset')
| -rw-r--r-- | nihil.flagset/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | nihil.flagset/flagset.ccm | 17 | ||||
| -rw-r--r-- | nihil.flagset/test.cc | 41 |
3 files changed, 23 insertions, 36 deletions
diff --git a/nihil.flagset/CMakeLists.txt b/nihil.flagset/CMakeLists.txt index bdc31ce..40d106e 100644 --- a/nihil.flagset/CMakeLists.txt +++ b/nihil.flagset/CMakeLists.txt @@ -1,6 +1,7 @@ # This source code is released into the public domain. add_library(nihil.flagset STATIC) +target_link_libraries(nihil.flagset PRIVATE nihil.std) target_sources(nihil.flagset PUBLIC FILE_SET modules TYPE CXX_MODULES FILES flagset.ccm diff --git a/nihil.flagset/flagset.ccm b/nihil.flagset/flagset.ccm index 8369b75..5bd7720 100644 --- a/nihil.flagset/flagset.ccm +++ b/nihil.flagset/flagset.ccm @@ -1,20 +1,11 @@ -/* - * This source code is released into the public domain. - */ - -module; +// This source code is released into the public domain. +export module nihil.flagset; /* - * flagset: a type-type flags type. + * flagset: a type-safe flags type. */ -#include <concepts> -#include <cstdint> -#include <iostream> -#include <limits> -#include <print> - -export module nihil.flagset; +import nihil.std; namespace nihil { diff --git a/nihil.flagset/test.cc b/nihil.flagset/test.cc index c3ebd35..90eef4a 100644 --- a/nihil.flagset/test.cc +++ b/nihil.flagset/test.cc @@ -1,18 +1,14 @@ -/* - * This source code is released into the public domain. - */ - -#include <concepts> -#include <format> -#include <sstream> +// This source code is released into the public domain. #include <catch2/catch_test_macros.hpp> +import nihil.std; import nihil.flagset; namespace { - -struct test_tag{}; +struct test_tag +{ +}; using testflags = nihil::flagset<unsigned, test_tag>; constexpr auto zero = testflags::bit<0>(); @@ -20,8 +16,6 @@ constexpr auto one = testflags::bit<1>(); constexpr auto two = testflags::bit<2>(); constexpr auto twelve = testflags::bit<12>(); -} - TEST_CASE("flagset: invariant", "[nihil]") { static_assert(std::regular<testflags>); @@ -45,17 +39,17 @@ TEST_CASE("flagset: mask<>", "[nihil]") TEST_CASE("flagset: constructor", "[nihil]") { - SECTION("default construct") { + SECTION ("default construct") { auto flags = testflags(); REQUIRE(flags.value() == 0); } - SECTION("construct from int") { + SECTION ("construct from int") { auto flags = testflags::from_int(one.value() | zero.value()); REQUIRE(flags == (one | zero)); } - SECTION("copy construct") { + SECTION ("copy construct") { auto flags = one; auto flags2(flags); REQUIRE(flags == flags2); @@ -64,46 +58,46 @@ TEST_CASE("flagset: constructor", "[nihil]") TEST_CASE("flagset: operators", "[nihil]") { - SECTION("operator|") { + SECTION ("operator|") { REQUIRE((zero | one).value() == 0x3); } - SECTION("operator|=") { + SECTION ("operator|=") { auto flags = zero; flags |= one; REQUIRE(flags.value() == 0x3); } - SECTION("operator&") { + SECTION ("operator&") { auto flags = zero | one; REQUIRE((flags & zero) == zero); } - SECTION("operator&=") { + SECTION ("operator&=") { auto flags = zero | one | two; REQUIRE(flags.value() == 0x7); flags &= (zero | one); REQUIRE(flags.value() == 0x3); } - SECTION("operator^") { + SECTION ("operator^") { auto flags = zero | one; REQUIRE((flags ^ (one | two)) == (zero | two)); } - SECTION("operator^=") { + SECTION ("operator^=") { auto flags = zero | one; flags ^= (one | two); REQUIRE(flags == (zero | two)); } - SECTION("operator~") { + SECTION ("operator~") { auto flags = ~zero; REQUIRE(flags.value() == ~static_cast<unsigned>(1)); } - SECTION("operator==") { + SECTION ("operator==") { auto flags = zero; REQUIRE(flags == zero); REQUIRE(flags != one); @@ -133,7 +127,7 @@ TEST_CASE("flagset: format", "[nihil]") TEST_CASE("flagset: ostream operator<<", "[nihil]") { - auto write = [] (testflags flags) -> std::string { + auto write = [](testflags flags) -> std::string { auto strm = std::ostringstream(); strm << flags; return strm.str(); @@ -147,3 +141,4 @@ TEST_CASE("flagset: ostream operator<<", "[nihil]") REQUIRE(write(twelve) == "<12>"); REQUIRE(write(twelve | one) == "<12,1>"); } +} // anonymous namespace |
