// -*- mode: c++; c-basic-offset: 2; -*- #ifndef TEST_HH #define TEST_HH #include #include #define BEFORE \ unsigned int tot = 0, ok = 0 #define AFTER \ do { \ std::cout << "PASS: " << ok << '\n' \ << "FAIL: " << (tot - ok) << std::endl; \ return ok == tot ? EXIT_SUCCESS : EXIT_FAILURE; \ } while (false) #define RUN(test) \ do { \ ++tot; \ if ((test)) ++ok; \ } while (false) #define ASSERT_EQ(expected, actual) \ do { \ auto e_ = (expected); \ auto a_ = (actual); \ if (e_ != a_) { \ std::cerr << __FILE__ << ':' << __LINE__ << ": " \ << __FUNCTION__ << ": Expected " << e_ \ << " got " << a_ << std::endl; \ return false; \ } \ } while (false) #define ASSERT_STREQ(expected, actual) \ do { \ auto e_ = (expected); \ auto a_ = (actual); \ if (!(a_ == e_ || (a_ && e_ && strcmp(a_, e_) == 0))) { \ std::cerr << __FILE__ << ':' << __LINE__ << ": " \ << __FUNCTION__ << ": Expected " << (e_ ? e_ : "null") \ << " got " << (a_ ? a_ : "null") << std::endl; \ return false; \ } \ } while (false) #endif // TEST_HH