Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/projects/SelfTest/EnumToString.cpp
diff options
context:
space:
mode:
authorPhil Nash2014-09-04 07:27:09 +0100
committerPhil Nash2014-09-04 07:27:09 +0100
commit886ef1620a224b1fd3d15001dcae4fc9a5e71c83 (patch)
tree70e720ee5277c49d7dcc5dcf8b99b6e6cf186068 /projects/SelfTest/EnumToString.cpp
parent4caabfa45ebe21cf9c0c07e04af3cd43614a984c (diff)
downloadcatch3-886ef1620a224b1fd3d15001dcae4fc9a5e71c83.tar.gz
Some minor tidy-up/ style alignment of recent toString merges
Diffstat (limited to 'projects/SelfTest/EnumToString.cpp')
-rw-r--r--projects/SelfTest/EnumToString.cpp43
1 files changed, 24 insertions, 19 deletions
diff --git a/projects/SelfTest/EnumToString.cpp b/projects/SelfTest/EnumToString.cpp
index 40c11ca9..b35721dc 100644
--- a/projects/SelfTest/EnumToString.cpp
+++ b/projects/SelfTest/EnumToString.cpp
@@ -8,8 +8,7 @@
// Enum without user-provided stream operator
enum Enum1 { Enum1Value0, Enum1Value1 };
-TEST_CASE( "toString(enum)", "[toString][enum]" )
-{
+TEST_CASE( "toString(enum)", "[toString][enum]" ) {
Enum1 e0 = Enum1Value0;
CHECK( Catch::toString(e0) == "0" );
Enum1 e1 = Enum1Value1;
@@ -19,13 +18,11 @@ TEST_CASE( "toString(enum)", "[toString][enum]" )
// Enum with user-provided stream operator
enum Enum2 { Enum2Value0, Enum2Value1 };
-inline std::ostream& operator<<( std::ostream& os, Enum2 v )
-{
+inline std::ostream& operator<<( std::ostream& os, Enum2 v ) {
return os << "E2{" << static_cast<int>(v) << "}";
}
-TEST_CASE( "toString(enum w/operator<<)", "[toString][enum]" )
-{
+TEST_CASE( "toString(enum w/operator<<)", "[toString][enum]" ) {
Enum2 e0 = Enum2Value0;
CHECK( Catch::toString(e0) == "E2{0}" );
Enum2 e1 = Enum2Value1;
@@ -33,11 +30,15 @@ TEST_CASE( "toString(enum w/operator<<)", "[toString][enum]" )
}
#if defined(CATCH_CPP11_OR_GREATER)
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++98-compat"
+#endif
+
// Enum class without user-provided stream operator
enum class EnumClass1 { EnumClass1Value0, EnumClass1Value1 };
-TEST_CASE( "toString(enum class)", "[toString][enum][enumClass]" )
-{
+TEST_CASE( "toString(enum class)", "[toString][enum][enumClass]" ) {
EnumClass1 e0 = EnumClass1::EnumClass1Value0;
CHECK( Catch::toString(e0) == "0" );
EnumClass1 e1 = EnumClass1::EnumClass1Value1;
@@ -47,25 +48,29 @@ TEST_CASE( "toString(enum class)", "[toString][enum][enumClass]" )
// Enum class with user-provided stream operator
enum class EnumClass2 : short { EnumClass2Value0, EnumClass2Value1 };
-inline std::ostream& operator<<( std::ostream& os, EnumClass2 e2 )
-{
- switch( e2 )
- {
- case EnumClass2::EnumClass2Value0:
- return os << "E2/V0";
- case EnumClass2::EnumClass2Value1:
- return os << "E2/V1";
+inline std::ostream& operator<<( std::ostream& os, EnumClass2 e2 ) {
+ switch( (int)e2 ) {
+ case (int)EnumClass2::EnumClass2Value0:
+ return os << "E2/V0";
+ case (int)EnumClass2::EnumClass2Value1:
+ return os << "E2/V1";
+ default:
+ return os << "Unknown enum value " << (int)e2;
}
- return os << "unexpected...";
}
-TEST_CASE( "toString(enum class w/operator<<)", "[toString][enum][enumClass]" )
-{
+TEST_CASE( "toString(enum class w/operator<<)", "[toString][enum][enumClass]" ) {
EnumClass2 e0 = EnumClass2::EnumClass2Value0;
CHECK( Catch::toString(e0) == "E2/V0" );
EnumClass2 e1 = EnumClass2::EnumClass2Value1;
CHECK( Catch::toString(e1) == "E2/V1" );
+
+ EnumClass2 e3 = static_cast<EnumClass2>(10);
+ CHECK( Catch::toString(e3) == "Unknown enum value 10" );
}
+#ifdef __clang__
+#pragma clang diagnostic pop
#endif
+#endif // CATCH_CPP11_OR_GREATER