]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/unittest/test.h
Revert "Make Lint Happy"
[dragonfireclient.git] / src / unittest / test.h
index 47a441e025766dafb41714faa28165d7753bdb8e..1102f6d33b2b77c41d5984f6f27dc66a954cd69e 100644 (file)
@@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef TEST_HEADER
-#define TEST_HEADER
+#pragma once
 
 #include <exception>
 #include <vector>
@@ -32,66 +31,65 @@ class TestFailedException : public std::exception {
 };
 
 // Runs a unit test and reports results
-#define TEST(fxn, ...) do {                                                 \
-       u32 t1 = porting::getTime(PRECISION_MILLI);                             \
-       try {                                                                   \
-               fxn(__VA_ARGS__);                                                   \
-               dstream << "[PASS] ";                                               \
-       } catch (TestFailedException &e) {                                      \
-               dstream << "[FAIL] ";                                               \
-               num_tests_failed++;                                                 \
-       } catch (std::exception &e) {                                           \
-               dstream << "Caught unhandled exception: " << e.what() << std::endl; \
-               dstream << "[FAIL] ";                                               \
-               num_tests_failed++;                                                 \
-       }                                                                       \
-       num_tests_run++;                                                        \
-       u32 tdiff = porting::getTime(PRECISION_MILLI) - t1;                     \
-       dstream << #fxn << " - " << tdiff << "ms" << std::endl;                 \
-} while (0)
+#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) do {                                       \
-       if (!(x)) {                                               \
-               dstream << "Test assertion failed: " #x << std::endl  \
-                       << "    at " << fs::GetFilenameFromPath(__FILE__) \
-                       << ":" << __LINE__ << std::endl;                  \
-               throw TestFailedException();                          \
-       }                                                         \
-} while (0)
+#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, ...) do {                                        \
-       if (!(x)) {                                                        \
-               char utest_buf[1024];                                          \
-               snprintf(utest_buf, sizeof(utest_buf), fmt, __VA_ARGS__);      \
-               dstream << "Test assertion failed: " << utest_buf << std::endl \
-                       << "    at " << fs::GetFilenameFromPath(__FILE__)          \
-                       << ":" << __LINE__ << std::endl;                           \
-               throw TestFailedException();                                   \
-       }                                                                  \
-} while (0)
+#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) do {                             \
-       T a = (actual);                                                           \
-       T e = (expected);                                                         \
-       if (!(a CMP e)) {                                                         \
-               dstream << "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();                                          \
-       }                                                                         \
-} while (0)
+#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) do { \
+#define EXCEPTION_CHECK(EType, code) {    \
        bool exception_thrown = false;        \
        try {                                 \
                code;                             \
@@ -99,7 +97,7 @@ class TestFailedException : public std::exception {
                exception_thrown = true;          \
        }                                     \
        UASSERT(exception_thrown);            \
-} while (0)
+}
 
 class IGameDef;
 
@@ -141,6 +139,4 @@ extern content_t t_CONTENT_WATER;
 extern content_t t_CONTENT_LAVA;
 extern content_t t_CONTENT_BRICK;
 
-void run_tests();
-
-#endif
+bool run_tests();