From 7cdc2885b067787ba3c92323f23bfcdbb9e83d43 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Fri, 18 Dec 2020 16:12:40 +0700 Subject: [PATCH] bitfields logic operators tests --- headers/enum.hpp/enum_bitflags.hpp | 80 +++++++++++++++--------------- untests/enum_bitflags_tests.cpp | 20 ++++++++ 2 files changed, 60 insertions(+), 40 deletions(-) diff --git a/headers/enum.hpp/enum_bitflags.hpp b/headers/enum.hpp/enum_bitflags.hpp index bf4f15c..8012c0b 100644 --- a/headers/enum.hpp/enum_bitflags.hpp +++ b/headers/enum.hpp/enum_bitflags.hpp @@ -143,18 +143,18 @@ namespace enum_hpp::bitflags template < typename Enum , std::enable_if_t, int> = 0 > - constexpr bool all_of(Enum l, Enum r) noexcept { - return all_of(bitflags{l}, bitflags{r}); + constexpr bool all_of(Enum flags, Enum mask) noexcept { + return all_of(bitflags{flags}, bitflags{mask}); } template < typename Enum > - constexpr bool all_of(Enum l, bitflags r) noexcept { - return all_of(bitflags{l}, r); + constexpr bool all_of(Enum flags, bitflags mask) noexcept { + return all_of(bitflags{flags}, mask); } template < typename Enum > - constexpr bool all_of(bitflags l, Enum r) noexcept { - return all_of(l, bitflags{r}); + constexpr bool all_of(bitflags flags, Enum mask) noexcept { + return all_of(flags, bitflags{mask}); } template < typename Enum > @@ -168,24 +168,24 @@ namespace enum_hpp::bitflags template < typename Enum , std::enable_if_t, int> = 0 > - constexpr bool any_of(Enum l, Enum r) noexcept { - return any_of(bitflags{l}, bitflags{r}); + constexpr bool any_of(Enum flags, Enum mask) noexcept { + return any_of(bitflags{flags}, bitflags{mask}); } template < typename Enum > - constexpr bool any_of(Enum l, bitflags r) noexcept { - return any_of(bitflags{l}, r); + constexpr bool any_of(Enum flags, bitflags mask) noexcept { + return any_of(bitflags{flags}, mask); } template < typename Enum > - constexpr bool any_of(bitflags l, Enum r) noexcept { - return any_of(l, bitflags{r}); + constexpr bool any_of(bitflags flags, Enum mask) noexcept { + return any_of(flags, bitflags{mask}); } template < typename Enum > - constexpr bool any_of(bitflags l, bitflags r) noexcept { - return r.as_raw() == 0 - || (l.as_raw() & r.as_raw()) != 0; + constexpr bool any_of(bitflags flags, bitflags mask) noexcept { + return mask.as_raw() == 0 + || (flags.as_raw() & mask.as_raw()) != 0; } // @@ -194,24 +194,24 @@ namespace enum_hpp::bitflags template < typename Enum , std::enable_if_t, int> = 0 > - constexpr bool none_of(Enum l, Enum r) noexcept { - return none_of(bitflags{l}, bitflags{r}); + constexpr bool none_of(Enum flags, Enum mask) noexcept { + return none_of(bitflags{flags}, bitflags{mask}); } template < typename Enum > - constexpr bool none_of(Enum l, bitflags r) noexcept { - return none_of(bitflags{l}, r); + constexpr bool none_of(Enum flags, bitflags mask) noexcept { + return none_of(bitflags{flags}, mask); } template < typename Enum > - constexpr bool none_of(bitflags l, Enum r) noexcept { - return none_of(l, bitflags{r}); + constexpr bool none_of(bitflags flags, Enum mask) noexcept { + return none_of(flags, bitflags{mask}); } template < typename Enum > - constexpr bool none_of(bitflags l, bitflags r) noexcept { - return r.as_raw() != 0 - && (l.as_raw() & r.as_raw()) == 0; + constexpr bool none_of(bitflags flags, bitflags mask) noexcept { + return mask.as_raw() != 0 + && (flags.as_raw() & mask.as_raw()) == 0; } // @@ -220,23 +220,23 @@ namespace enum_hpp::bitflags template < typename Enum , std::enable_if_t, int> = 0 > - constexpr bool any_except(Enum l, Enum r) noexcept { - return any_except(bitflags{l}, bitflags{r}); + constexpr bool any_except(Enum flags, Enum mask) noexcept { + return any_except(bitflags{flags}, bitflags{mask}); } template < typename Enum > - constexpr bool any_except(Enum l, bitflags r) noexcept { - return any_except(bitflags{l}, r); + constexpr bool any_except(Enum flags, bitflags mask) noexcept { + return any_except(bitflags{flags}, mask); } template < typename Enum > - constexpr bool any_except(bitflags l, Enum r) noexcept { - return any_except(l, bitflags{r}); + constexpr bool any_except(bitflags flags, Enum mask) noexcept { + return any_except(flags, bitflags{mask}); } template < typename Enum > - constexpr bool any_except(bitflags l, bitflags r) noexcept { - return any_of(l, ~r); + constexpr bool any_except(bitflags flags, bitflags mask) noexcept { + return any_of(flags, ~mask); } // @@ -245,23 +245,23 @@ namespace enum_hpp::bitflags template < typename Enum , std::enable_if_t, int> = 0 > - constexpr bool none_except(Enum l, Enum r) noexcept { - return none_except(bitflags{l}, bitflags{r}); + constexpr bool none_except(Enum flags, Enum mask) noexcept { + return none_except(bitflags{flags}, bitflags{mask}); } template < typename Enum > - constexpr bool none_except(Enum l, bitflags r) noexcept { - return none_except(bitflags{l}, r); + constexpr bool none_except(Enum flags, bitflags mask) noexcept { + return none_except(bitflags{flags}, mask); } template < typename Enum > - constexpr bool none_except(bitflags l, Enum r) noexcept { - return none_except(l, bitflags{r}); + constexpr bool none_except(bitflags flags, Enum mask) noexcept { + return none_except(flags, bitflags{mask}); } template < typename Enum > - constexpr bool none_except(bitflags l, bitflags r) noexcept { - return none_of(l, ~r); + constexpr bool none_except(bitflags flags, bitflags mask) noexcept { + return none_of(flags, ~mask); } } diff --git a/untests/enum_bitflags_tests.cpp b/untests/enum_bitflags_tests.cpp index e6d271d..af593ac 100644 --- a/untests/enum_bitflags_tests.cpp +++ b/untests/enum_bitflags_tests.cpp @@ -33,6 +33,26 @@ TEST_CASE("enum_bitflags") { STATIC_CHECK((access::read_write ^ access::write) == bf::bitflags(0x1)); } + SUBCASE("logic_operators") { + STATIC_CHECK(bf::bitflags{access::read} < bf::bitflags{access::write}); + STATIC_CHECK_FALSE(bf::bitflags{access::write} < bf::bitflags{access::read}); + STATIC_CHECK(bf::bitflags{access::read} <= bf::bitflags{access::write}); + STATIC_CHECK_FALSE(bf::bitflags{access::write} <= bf::bitflags{access::read}); + STATIC_CHECK(bf::bitflags{access::write} <= bf::bitflags{access::write}); + + STATIC_CHECK(bf::bitflags{access::write} > bf::bitflags{access::read}); + STATIC_CHECK_FALSE(bf::bitflags{access::read} > bf::bitflags{access::write}); + STATIC_CHECK(bf::bitflags{access::write} >= bf::bitflags{access::read}); + STATIC_CHECK_FALSE(bf::bitflags{access::read} >= bf::bitflags{access::write}); + STATIC_CHECK(bf::bitflags{access::read} >= bf::bitflags{access::read}); + + STATIC_CHECK(bf::bitflags{access::read} == bf::bitflags{access::read}); + STATIC_CHECK_FALSE(bf::bitflags{access::read} == bf::bitflags{access::write}); + + STATIC_CHECK(bf::bitflags{access::read} != bf::bitflags{access::write}); + STATIC_CHECK_FALSE(bf::bitflags{access::read} != bf::bitflags{access::read}); + } + SUBCASE("bitflags_operators") { STATIC_CHECK(0xFE == ~bf::bitflags{access::read}); STATIC_CHECK(~bf::bitflags{access::read} == 0xFE);