tests: Log exceptions thrown inside of unit tests

master
kwolekr 2015-07-31 23:29:51 -04:00
parent cfed682d04
commit 7919318be7
1 changed files with 16 additions and 12 deletions

View File

@ -32,18 +32,22 @@ class TestFailedException : public std::exception {
}; };
// Runs a unit test and reports results // Runs a unit test and reports results
#define TEST(fxn, ...) do { \ #define TEST(fxn, ...) do { \
u32 t1 = porting::getTime(PRECISION_MILLI); \ u32 t1 = porting::getTime(PRECISION_MILLI); \
try { \ try { \
fxn(__VA_ARGS__); \ fxn(__VA_ARGS__); \
dstream << "[PASS] "; \ dstream << "[PASS] "; \
} catch (...) { \ } catch (TestFailedException &e) { \
dstream << "[FAIL] "; \ dstream << "[FAIL] "; \
num_tests_failed++; \ num_tests_failed++; \
} \ } catch (std::exception &e) { \
num_tests_run++; \ dstream << "Caught unhandled exception: " << e.what() << std::endl; \
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1; \ dstream << "[FAIL] "; \
dstream << #fxn << " - " << tdiff << "ms" << std::endl; \ num_tests_failed++; \
} \
num_tests_run++; \
u32 tdiff = porting::getTime(PRECISION_MILLI) - t1; \
dstream << #fxn << " - " << tdiff << "ms" << std::endl; \
} while (0) } while (0)
// Asserts the specified condition is true, or fails the current unit test // Asserts the specified condition is true, or fails the current unit test