diff options
Diffstat (limited to 'src/unittest/test.h')
-rw-r--r-- | src/unittest/test.h | 120 |
1 files changed, 63 insertions, 57 deletions
diff --git a/src/unittest/test.h b/src/unittest/test.h index 1102f6d33..efc5b71bf 100644 --- a/src/unittest/test.h +++ b/src/unittest/test.h @@ -27,81 +27,86 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "filesys.h" #include "mapnode.h" -class TestFailedException : public std::exception { +class TestFailedException : public std::exception +{ }; // Runs a unit test and reports results -#define TEST(fxn, ...) { \ - u64 t1 = porting::getTimeMs(); \ - try { \ - fxn(__VA_ARGS__); \ - rawstream << "[PASS] "; \ - } catch (TestFailedException &e) { \ - rawstream << "[FAIL] "; \ - num_tests_failed++; \ - } catch (std::exception &e) { \ - rawstream << "Caught unhandled exception: " << e.what() << std::endl; \ - rawstream << "[FAIL] "; \ - num_tests_failed++; \ - } \ - num_tests_run++; \ - u64 tdiff = porting::getTimeMs() - t1; \ - rawstream << #fxn << " - " << tdiff << "ms" << std::endl; \ -} +#define TEST(fxn, ...) \ + { \ + u64 t1 = porting::getTimeMs(); \ + try { \ + fxn(__VA_ARGS__); \ + rawstream << "[PASS] "; \ + } catch (TestFailedException & e) { \ + rawstream << "[FAIL] "; \ + num_tests_failed++; \ + } catch (std::exception & e) { \ + rawstream << "Caught unhandled exception: " << e.what() \ + << std::endl; \ + rawstream << "[FAIL] "; \ + num_tests_failed++; \ + } \ + num_tests_run++; \ + u64 tdiff = porting::getTimeMs() - t1; \ + rawstream << #fxn << " - " << tdiff << "ms" << std::endl; \ + } // Asserts the specified condition is true, or fails the current unit test -#define UASSERT(x) \ - if (!(x)) { \ - rawstream << "Test assertion failed: " #x << std::endl \ - << " at " << fs::GetFilenameFromPath(__FILE__) \ - << ":" << __LINE__ << std::endl; \ - throw TestFailedException(); \ +#define UASSERT(x) \ + if (!(x)) { \ + rawstream << "Test assertion failed: " #x << std::endl \ + << " at " << fs::GetFilenameFromPath(__FILE__) << ":" \ + << __LINE__ << std::endl; \ + throw TestFailedException(); \ } // Asserts the specified condition is true, or fails the current unit test // and prints the format specifier fmt -#define UTEST(x, fmt, ...) \ - if (!(x)) { \ - char utest_buf[1024]; \ - snprintf(utest_buf, sizeof(utest_buf), fmt, __VA_ARGS__); \ - rawstream << "Test assertion failed: " << utest_buf << std::endl \ - << " at " << fs::GetFilenameFromPath(__FILE__) \ - << ":" << __LINE__ << std::endl; \ - throw TestFailedException(); \ +#define UTEST(x, fmt, ...) \ + if (!(x)) { \ + char utest_buf[1024]; \ + snprintf(utest_buf, sizeof(utest_buf), fmt, __VA_ARGS__); \ + rawstream << "Test assertion failed: " << utest_buf << std::endl \ + << " at " << fs::GetFilenameFromPath(__FILE__) << ":" \ + << __LINE__ << std::endl; \ + throw TestFailedException(); \ } // Asserts the comparison specified by CMP is true, or fails the current unit test -#define UASSERTCMP(T, CMP, actual, expected) { \ - T a = (actual); \ - T e = (expected); \ - if (!(a CMP e)) { \ - rawstream \ - << "Test assertion failed: " << #actual << " " << #CMP << " " \ - << #expected << std::endl \ - << " at " << fs::GetFilenameFromPath(__FILE__) << ":" \ - << __LINE__ << std::endl \ - << " actual: " << a << std::endl << " expected: " \ - << e << std::endl; \ - throw TestFailedException(); \ - } \ -} +#define UASSERTCMP(T, CMP, actual, expected) \ + { \ + T a = (actual); \ + T e = (expected); \ + if (!(a CMP e)) { \ + rawstream << "Test assertion failed: " << #actual << " " << #CMP \ + << " " << #expected << std::endl \ + << " at " << fs::GetFilenameFromPath(__FILE__) \ + << ":" << __LINE__ << std::endl \ + << " actual: " << a << std::endl \ + << " expected: " << e << std::endl; \ + throw TestFailedException(); \ + } \ + } #define UASSERTEQ(T, actual, expected) UASSERTCMP(T, ==, actual, expected) // UASSERTs that the specified exception occurs -#define EXCEPTION_CHECK(EType, code) { \ - bool exception_thrown = false; \ - try { \ - code; \ - } catch (EType &e) { \ - exception_thrown = true; \ - } \ - UASSERT(exception_thrown); \ -} +#define EXCEPTION_CHECK(EType, code) \ + { \ + bool exception_thrown = false; \ + try { \ + code; \ + } catch (EType & e) { \ + exception_thrown = true; \ + } \ + UASSERT(exception_thrown); \ + } class IGameDef; -class TestBase { +class TestBase +{ public: bool testModule(IGameDef *gamedef); std::string getTestTempDirectory(); @@ -117,7 +122,8 @@ private: std::string m_test_dir; }; -class TestManager { +class TestManager +{ public: static std::vector<TestBase *> &getTestModules() { |