summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Generating/BasicGeneratorTest.cpp2
-rw-r--r--tests/Generating/PieceRotationTest.cpp13
-rw-r--r--tests/TestHelpers.h130
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