#ifndef __TEST_BASE_H__ #define __TEST_BASE_H__ #include #include #include void assertTick(); class TestFailed : public std::exception { public: TestFailed(const std::string& message) throw(); virtual ~TestFailed() throw(); virtual const char* what() const throw(); private: std::string message; }; template void assertEq(T val1, T val2, const std::string& errorMessage) { if (val1 != val2) { throw TestFailed(errorMessage); } assertTick(); } class StringStream : public std::stringstream { public: StringStream& empty(); }; template class assertException { public: template static void thrown(TFun fun, const std::string& errorMessage) { try { fun(); throw TestFailed(errorMessage); } catch (TException& ex) { assertTick(); } } }; #endif