1 #include "catch.hpp" 2 3 #include "internal/catch_enum_values_registry.h" 4 5 enum class EnumClass3 { Value1, Value2, Value3, Value4 }; 6 7 8 TEST_CASE( "parseEnums", "[Strings][enums]" ) { 9 using namespace Catch::Matchers; 10 using Catch::Detail::parseEnums; 11 12 SECTION( "No enums" ) 13 CHECK_THAT( parseEnums( "" ), Equals( std::vector<Catch::StringRef>{} ) ); 14 15 SECTION( "One enum value" ) { 16 CHECK_THAT( parseEnums( "ClassName::EnumName::Value1" ), 17 Equals(std::vector<Catch::StringRef>{"Value1"} ) ); 18 CHECK_THAT( parseEnums( "Value1" ), 19 Equals( std::vector<Catch::StringRef>{"Value1"} ) ); 20 CHECK_THAT( parseEnums( "EnumName::Value1" ), 21 Equals(std::vector<Catch::StringRef>{"Value1"} ) ); 22 } 23 24 SECTION( "Multiple enum values" ) { 25 CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2" ), 26 Equals( std::vector<Catch::StringRef>{"Value1", "Value2"} ) ); 27 CHECK_THAT( parseEnums( "ClassName::EnumName::Value1, ClassName::EnumName::Value2, ClassName::EnumName::Value3" ), 28 Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) ); 29 CHECK_THAT( parseEnums( "ClassName::EnumName::Value1,ClassName::EnumName::Value2 , ClassName::EnumName::Value3" ), 30 Equals( std::vector<Catch::StringRef>{"Value1", "Value2", "Value3"} ) ); 31 } 32 } 33 34 TEST_CASE( "Directly creating an EnumInfo" ) { 35 36 using namespace Catch::Detail; 37 std::unique_ptr<EnumInfo> enumInfo = makeEnumInfo( "EnumName", "EnumName::Value1, EnumName::Value2", {0, 1} ); 38 39 CHECK( enumInfo->lookup(0) == "Value1" ); 40 CHECK( enumInfo->lookup(1) == "Value2" ); 41 CHECK( enumInfo->lookup(3) == "{** unexpected enum value **}" ); 42 } 43