2014-11-26 16:20:55 +01:00
|
|
|
#ifndef __TEST_H__
|
|
|
|
#define __TEST_H__
|
|
|
|
|
2014-12-03 16:32:56 +01:00
|
|
|
#include <vector>
|
|
|
|
#include <string>
|
2014-12-02 01:27:02 +01:00
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
#define TEST(name) \
|
|
|
|
void name(); \
|
|
|
|
namespace g_dummy { int _##name = AddTest(name, #name); } \
|
|
|
|
void name()
|
|
|
|
|
2014-12-02 01:27:02 +01:00
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
#define ASSERT(cond) if (!(cond)) throw AssertionFailedException(#cond);
|
2016-02-27 15:01:06 +01:00
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
#define ASSERT_TRUE(cond) ASSERT(cond);
|
|
|
|
#define ASSERT_FALSE(cond) if (cond) throw AssertionFailedException(#cond);
|
2014-11-26 18:20:10 +01:00
|
|
|
|
|
|
|
#define ASSERT_NULL(value) ASSERT_TRUE(value == NULL);
|
|
|
|
#define ASSERT_NOTNULL(value) ASSERT_TRUE(value != NULL);
|
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
#define ASSERT_STREQ(a, b) \
|
|
|
|
if (std::string(a).compare(std::string(b)) != 0) throw AssertionFailedException(#a " == " #b)
|
|
|
|
#define ASSERT_EQ(a, b) \
|
2014-12-02 01:27:02 +01:00
|
|
|
if (a != b) { \
|
|
|
|
std::cout << "Actual values: " << a << " != " << b << std::endl; \
|
|
|
|
} \
|
2014-11-26 16:20:55 +01:00
|
|
|
ASSERT(a == b);
|
2016-02-27 15:01:06 +01:00
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
|
2014-11-26 18:20:10 +01:00
|
|
|
|
2014-11-26 16:20:55 +01:00
|
|
|
class AssertionFailedException: public std::exception {
|
|
|
|
public:
|
2016-02-27 15:01:06 +01:00
|
|
|
AssertionFailedException(std::string msg) :
|
|
|
|
std::exception(),
|
|
|
|
_msg(msg) {};
|
2014-11-26 16:20:55 +01:00
|
|
|
|
2016-02-27 15:01:06 +01:00
|
|
|
virtual const char* what() const throw() {
|
|
|
|
return _msg.c_str();
|
|
|
|
}
|
2014-11-26 16:20:55 +01:00
|
|
|
|
|
|
|
protected:
|
2016-02-27 15:01:06 +01:00
|
|
|
std::string _msg;
|
2014-11-26 16:20:55 +01:00
|
|
|
};
|
|
|
|
|
2014-12-03 16:32:56 +01:00
|
|
|
int AddTest(void (*foo)(void), std::string name);
|
2014-11-26 16:20:55 +01:00
|
|
|
|
|
|
|
#endif
|