|
悪フザケ♪
#include "WinUnit.h"
class Target {
friend struct Tester; // struct Tester には見せてやる
private:
int value;
public:
Target(int v) : value(v) {}
};
struct Tester {
// static void XXX() でテストを書く
static void bad() {
Target t(3);
WIN_ASSERT_EQUAL(4, t.value);
}
static void good() {
Target t(3);
WIN_ASSERT_EQUAL(3, t.value);
}
};
/* フザケた おまぢない */
#define TEST_CLASS_METHOD_(CLASS,UC,METHOD) BEGIN_TEST(CLASS##UC##METHOD) { CLASS::METHOD(); } END_TEST
#define TEST_CLASS_METHOD(CLASS,METHOD) TEST_CLASS_METHOD_(CLASS,_,METHOD)
/* Tester::good と Tester::bad をテスト汁! */
TEST_CLASS_METHOD(Tester,good);
TEST_CLASS_METHOD(Tester,bad);
|