From 5eadad52722826298d2d87fb0ec2fe09fc0649ee Mon Sep 17 00:00:00 2001 From: neargye Date: Sun, 30 Aug 2020 10:43:06 +0300 Subject: [PATCH] update test flag --- test/test_flags.cpp | 182 +++----------------------------------------- 1 file changed, 9 insertions(+), 173 deletions(-) diff --git a/test/test_flags.cpp b/test/test_flags.cpp index e87376e..6686697 100644 --- a/test/test_flags.cpp +++ b/test/test_flags.cpp @@ -20,6 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +#if defined(__clang__) +# pragma clang diagnostic push +#elif defined(__GNUC__) +# pragma GCC diagnostic push +#elif defined(_MSC_VER) +# pragma warning(push) +# pragma warning(disable : 4244) // warning C4244: 'argument': conversion from 'const T' to 'unsigned int', possible loss of data. +#endif + #define CATCH_CONFIG_MAIN #include @@ -106,40 +115,6 @@ TEST_CASE("enum_cast") { REQUIRE_FALSE(enum_cast("None").has_value()); } - SECTION("strict string") { - constexpr auto cr = enum_cast("RED"); - REQUIRE(cr.value() == Color::RED); - REQUIRE(enum_cast("GREEN").value() == Color::GREEN); - REQUIRE(enum_cast("blue", [](char lhs, char rhs) { return std::tolower(lhs) == std::tolower(rhs); }).value() == Color::BLUE); - REQUIRE_FALSE(enum_cast("blue|RED", [](char lhs, char rhs) { return std::tolower(lhs) == std::tolower(rhs); }).has_value()); - REQUIRE_FALSE(enum_cast("GREEN|RED").has_value()); - REQUIRE_FALSE(enum_cast("GREEN|RED|RED").has_value()); - REQUIRE_FALSE(enum_cast("GREEN|RED|None").has_value()); - REQUIRE_FALSE(enum_cast("None").has_value()); - - constexpr auto no = enum_cast("one"); - REQUIRE(no.value() == Numbers::one); - REQUIRE(enum_cast("two").value() == Numbers::two); - REQUIRE(enum_cast("three").value() == Numbers::three); - REQUIRE(enum_cast("many") == Numbers::many); - REQUIRE_FALSE(enum_cast("None").has_value()); - - constexpr auto dr = enum_cast("Right"); - REQUIRE(enum_cast("Up").value() == Directions::Up); - REQUIRE(enum_cast("Down").value() == Directions::Down); - REQUIRE(dr.value() == Directions::Right); - REQUIRE(enum_cast("Left").value() == Directions::Left); - REQUIRE_FALSE(enum_cast("None").has_value()); - - constexpr auto nto = enum_cast("three|one"); - REQUIRE(enum_cast("one").value() == number::one); - REQUIRE(enum_cast("two").value() == number::two); - REQUIRE(enum_cast("three").value() == number::three); - REQUIRE(enum_cast("four").value() == number::four); - REQUIRE_FALSE(nto.has_value()); - REQUIRE_FALSE(enum_cast("None").has_value()); - } - SECTION("integer") { Color cm[3] = {Color::RED, Color::GREEN, Color::BLUE}; constexpr auto cr = enum_cast(1); @@ -174,41 +149,6 @@ TEST_CASE("enum_cast") { REQUIRE(nto.value() == (number::three | number::one)); REQUIRE_FALSE(enum_cast(0).has_value()); } - - SECTION("strict integer") { - Color cm[3] = {Color::RED, Color::GREEN, Color::BLUE}; - constexpr auto cr = enum_cast(1); - REQUIRE(cr.value() == Color::RED); - REQUIRE(enum_cast(2).value() == Color::GREEN); - REQUIRE(enum_cast(static_cast(cm[2])).value() == Color::BLUE); - REQUIRE_FALSE(enum_cast(1 | 2).has_value()); - REQUIRE_FALSE(enum_cast(1 | 2 | 1).has_value()); - REQUIRE_FALSE(enum_cast(1 | 2 | 8).has_value()); - REQUIRE_FALSE(enum_cast(0).has_value()); - - constexpr auto no = enum_cast(2); - REQUIRE(no.value() == Numbers::one); - REQUIRE(enum_cast(4).value() == Numbers::two); - REQUIRE(enum_cast(8).value() == Numbers::three); - REQUIRE(enum_cast(1 << 30).value() == Numbers::many); - REQUIRE_FALSE(enum_cast(127).has_value()); - REQUIRE_FALSE(enum_cast(0).has_value()); - - constexpr auto dr = enum_cast(std::uint64_t{1} << 63); - REQUIRE(enum_cast(std::uint64_t{1} << 31).value() == Directions::Up); - REQUIRE(enum_cast(std::uint64_t{1} << 20).value() == Directions::Down); - REQUIRE(dr.value() == Directions::Right); - REQUIRE(enum_cast(std::uint64_t{1} << 10).value() == Directions::Left); - REQUIRE_FALSE(enum_cast(0).has_value()); - - constexpr auto nto = enum_cast(2 | 8); - REQUIRE(enum_cast(1 << 1).value() == number::one); - REQUIRE(enum_cast(1 << 2).value() == number::two); - REQUIRE(enum_cast(1 << 3) == number::three); - REQUIRE(enum_cast(1 << 4) == number::four); - REQUIRE_FALSE(nto.has_value()); - REQUIRE_FALSE(enum_cast(0).has_value()); - } } TEST_CASE("enum_index") { @@ -284,77 +224,7 @@ TEST_CASE("enum_contains") { REQUIRE_FALSE(enum_contains(static_cast(0))); } - SECTION("strict value") { - Color cm[3] = {Color::RED, Color::GREEN, Color::BLUE}; - constexpr auto cr = enum_contains(Color::RED); - Color cg = Color::GREEN; - REQUIRE(cr); - REQUIRE(enum_contains(cg)); - REQUIRE(enum_contains(cm[2])); - REQUIRE_FALSE(enum_contains(Color::RED | Color::GREEN)); - REQUIRE_FALSE(enum_contains(Color::RED | Color::GREEN | Color::GREEN)); - REQUIRE_FALSE(enum_contains(Color::RED | Color{8})); - REQUIRE_FALSE(enum_contains(static_cast(0))); - - constexpr auto no = enum_contains(Numbers::one); - REQUIRE(no); - REQUIRE(enum_contains(Numbers::two)); - REQUIRE(enum_contains(Numbers::three)); - REQUIRE(enum_contains(Numbers::many)); - REQUIRE_FALSE(enum_contains(static_cast(0))); - - constexpr auto dr = enum_contains(Directions::Right); - Directions dl = Directions::Left; - REQUIRE(enum_contains(dl)); - REQUIRE(enum_contains(Directions::Down)); - REQUIRE(enum_contains(Directions::Up)); - REQUIRE(dr); - REQUIRE_FALSE(enum_contains(static_cast(0))); - - constexpr auto nto = enum_contains(number::three | number::one); - REQUIRE(enum_contains(number::one)); - REQUIRE(enum_contains(number::two)); - REQUIRE(enum_contains(number::one)); - REQUIRE(enum_contains(number::four)); - REQUIRE_FALSE(nto); - REQUIRE_FALSE(enum_contains(static_cast(0))); - } - SECTION("integer") { - REQUIRE(enum_contains(1)); - REQUIRE(enum_contains(2)); - REQUIRE(enum_contains(4)); - REQUIRE_FALSE(enum_contains(1 | 2)); - REQUIRE_FALSE(enum_contains(1 | 2 | 1)); - REQUIRE_FALSE(enum_contains(1 | 2 | 8)); - REQUIRE_FALSE(enum_contains(0)); - - constexpr auto no = enum_contains(1 << 1); - REQUIRE(no); - REQUIRE(enum_contains(1 << 2)); - REQUIRE(enum_contains(1 << 3)); - REQUIRE(enum_contains(1 << 30)); - - constexpr auto dr = enum_contains(std::uint64_t{1} << 63); - REQUIRE(dr); - REQUIRE(enum_contains(std::uint64_t{1} << 10)); - REQUIRE(enum_contains(std::uint64_t{1} << 20)); - REQUIRE(enum_contains(std::uint64_t{1} << 31)); - REQUIRE_FALSE(enum_contains(static_cast(0))); - - constexpr auto nto = enum_contains(8 | 2); - REQUIRE(enum_contains(1 << 1)); - REQUIRE(enum_contains(1 << 2)); - REQUIRE(enum_contains(1 << 3)); - REQUIRE(enum_contains(1 << 4)); - REQUIRE_FALSE(enum_contains(8 | 2 | 16)); - REQUIRE_FALSE(enum_contains(8 | 16 | 16)); - REQUIRE_FALSE(nto); - REQUIRE_FALSE(enum_contains(8 | 64)); - REQUIRE_FALSE(enum_contains(0)); - } - - SECTION("strict integer") { REQUIRE(enum_contains(1)); REQUIRE(enum_contains(2)); REQUIRE(enum_contains(4)); @@ -421,40 +291,6 @@ TEST_CASE("enum_contains") { REQUIRE(nto); REQUIRE_FALSE(enum_contains("None")); } - - SECTION("strict string") { - constexpr auto cr = "RED"; - REQUIRE(enum_contains(cr)); - REQUIRE(enum_contains("GREEN")); - REQUIRE(enum_contains("blue", [](char lhs, char rhs) { return std::tolower(lhs) == std::tolower(rhs); })); - REQUIRE_FALSE(enum_contains("blue|RED", [](char lhs, char rhs) { return std::tolower(lhs) == std::tolower(rhs); })); - REQUIRE_FALSE(enum_contains("GREEN|RED")); - REQUIRE_FALSE(enum_contains("GREEN|RED|RED")); - REQUIRE_FALSE(enum_contains("GREEN|RED|None")); - REQUIRE_FALSE(enum_contains("None")); - - constexpr auto no = std::string_view{"one"}; - REQUIRE(enum_contains(no)); - REQUIRE(enum_contains("two")); - REQUIRE(enum_contains("three")); - REQUIRE(enum_contains("many")); - REQUIRE_FALSE(enum_contains("None")); - - auto dr = std::string{"Right"}; - REQUIRE(enum_contains("Up")); - REQUIRE(enum_contains("Down")); - REQUIRE(enum_contains(dr)); - REQUIRE(enum_contains("Left")); - REQUIRE_FALSE(enum_contains("None")); - - constexpr auto nto = enum_contains("three|one"); - REQUIRE(enum_contains("one")); - REQUIRE(enum_contains("two")); - REQUIRE(enum_contains("three")); - REQUIRE(enum_contains("four")); - REQUIRE_FALSE(nto); - REQUIRE_FALSE(enum_contains("None")); - } } TEST_CASE("enum_value") {