diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Generating/BasicGeneratorTest.cpp | 2 | ||||
-rw-r--r-- | tests/Generating/PieceRotationTest.cpp | 13 | ||||
-rw-r--r-- | tests/TestHelpers.h | 130 |
3 files changed, 83 insertions, 62 deletions
diff --git a/tests/Generating/BasicGeneratorTest.cpp b/tests/Generating/BasicGeneratorTest.cpp index 4b27f5344..10c66050b 100644 --- a/tests/Generating/BasicGeneratorTest.cpp +++ b/tests/Generating/BasicGeneratorTest.cpp @@ -186,7 +186,7 @@ static void testGenerateNether(cChunkGenerator & aDefaultNetherGen) } TEST_EQUAL_MSG(y, prevHeight, Printf("Failed: Same height across the entire chunk, at {%d, %d}: exp %d, got %d; top block: %d", x, z, prevHeight, y, chd.GetBlockType(x, y, z) - )) + )); auto blockType = chd.GetBlockType(x, y, z); TEST_EQUAL_MSG(blockType, E_BLOCK_BEDROCK, Printf("Bedrock ceiling at {%d, %d, %d}: %d", x, y, z, blockType) diff --git a/tests/Generating/PieceRotationTest.cpp b/tests/Generating/PieceRotationTest.cpp index ace3bd489..fff3655c1 100644 --- a/tests/Generating/PieceRotationTest.cpp +++ b/tests/Generating/PieceRotationTest.cpp @@ -53,11 +53,14 @@ public: -#define EXPECT(X) if (!(X)) \ - { \ - ASSERT(X); \ - throw cTestFailure(#X, __FILE__, __LINE__); \ - } +#define EXPECT(X) \ + do { \ + if (!(X)) \ + { \ + ASSERT(X); \ + throw cTestFailure(#X, __FILE__, __LINE__); \ + } \ + } while (false) diff --git a/tests/TestHelpers.h b/tests/TestHelpers.h index b5c905f43..0ef4014ac 100644 --- a/tests/TestHelpers.h +++ b/tests/TestHelpers.h @@ -45,12 +45,14 @@ public: /** Checks that the two values are equal; if not, throws a TestException. */ #define TEST_EQUAL(VAL1, VAL2) \ - if (VAL1 != VAL2) \ - { \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("Equality test failed: %s != %s", \ - #VAL1, #VAL2 \ - )); \ - } + do { \ + if (VAL1 != VAL2) \ + { \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("Equality test failed: %s != %s", #VAL1, #VAL2)); \ + } \ + } while (false) @@ -58,12 +60,14 @@ public: /** Checks that the two values are equal; if not, throws a TestException, includes the specified message. */ #define TEST_EQUAL_MSG(VAL1, VAL2, MSG) \ - if (VAL1 != VAL2) \ - { \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("Equality test failed: %s != %s (%s)", \ - #VAL1, #VAL2, MSG \ - )); \ - } + do { \ + if (VAL1 != VAL2) \ + { \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("Equality test failed: %s != %s (%s)", #VAL1, #VAL2, MSG)); \ + } \ + } while (false) @@ -71,12 +75,15 @@ public: /** Checks that the two values are not equal; if they are, throws a TestException. */ #define TEST_NOTEQUAL(VAL1, VAL2) \ - if (VAL1 == VAL2) \ - { \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("Inequality test failed: %s == %s", \ - #VAL1, #VAL2 \ - )); \ - } + do { \ + if (VAL1 == VAL2) \ + { \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("Inequality test failed: %s == %s", #VAL1, #VAL2) \ + ); \ + } \ + } while(false) @@ -124,29 +131,36 @@ public: /** Checks that the statement throws an exception of the specified class. */ #define TEST_THROWS(Stmt, ExcClass) \ - try \ - { \ - Stmt; \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("Failed to throw an exception of type %s", \ - #ExcClass \ - )); \ - } \ - catch (const ExcClass &) \ - { \ - /* This is the expected case. */ \ - } \ - catch (const std::exception & exc) \ - { \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("An unexpected std::exception descendant was thrown, was expecting type %s. Message is: %s", \ - #ExcClass, exc.what() \ - )); \ - } \ - catch (...) \ - { \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, Printf("An unexpected unknown exception object was thrown, was expecting type %s", \ - #ExcClass \ - )); \ - } + do { \ + try \ + { \ + Stmt; \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("Failed to throw an exception of type %s", #ExcClass) \ + ); \ + } \ + catch (const ExcClass &) \ + { \ + /* This is the expected case. */ \ + } \ + catch (const std::exception & exc) \ + { \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("An unexpected std::exception descendant was thrown, was expecting type %s. Message is: %s", \ + #ExcClass, exc.what() \ + )); \ + } \ + catch (...)\ + { \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + Printf("An unexpected unknown exception object was thrown, was expecting type %s", \ + #ExcClass \ + )); \ + } \ + } while (false) @@ -154,19 +168,23 @@ public: /** Checks that the statement throws an exception of any type. */ #define TEST_THROWS_ANY(Stmt) \ - try \ - { \ - Stmt; \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, "Failed to throw an exception of any type"); \ - } \ - catch (const TestException & exc) \ - { \ - throw exc; \ - } \ - catch (...) \ - { \ - /* This is the expected case */ \ - } + do { \ + try \ + { \ + Stmt; \ + throw TestException( \ + __FILE__, __LINE__, __FUNCTION__, \ + "Failed to throw an exception of any type"); \ + } \ + catch (const TestException & exc) \ + { \ + throw exc; \ + } \ + catch (...)\ + { \ + /* This is the expected case */ \ + } \ + } while (false) @@ -174,7 +192,7 @@ public: /** Fails the test unconditionally, with the specified message. */ #define TEST_FAIL(MSG) \ - throw TestException(__FILE__, __LINE__, __FUNCTION__, MSG); + throw TestException(__FILE__, __LINE__, __FUNCTION__, MSG) @@ -184,7 +202,7 @@ public: #ifdef _DEBUG #define TEST_ASSERTS(Stmt) TEST_THROWS(Stmt, cAssertFailure) #else - #define TEST_ASSERTS(Stmt) LOG("Skipped, cannot test in Release mode: TEST_ASSERT(%s); (%s:%d)", #Stmt, __FILE__, __LINE__); + #define TEST_ASSERTS(Stmt) LOG("Skipped, cannot test in Release mode: TEST_ASSERT(%s); (%s:%d)", #Stmt, __FILE__, __LINE__) #endif // else _DEBUG |