επιστημηです。はじめまして。
"型から入る"のが僕の癖でして、CppUnitがきっかけで
このMLを見つけました。よろしくです。
挨拶がわりに、 assert に使えるちょっとしたマクロ:
// 実際には1行で書くべし
#define assert_if(PRED) {
std::string p = PRED;
if (!p.empty())
throw CppUnit::Exception(p,__LINE__,__FILE__);
}
というオマジナイを唱えておけば、
template<class T>
struct assert_equal {
/* 評価値がfalseなら適当な文字列、 trueなら空文字列を返す */
std::string operator()(const T& x, const T& y) const {
std::ostringstream stream;
if ( x != y ) { stream << x << " != " << y; }
return stream.str();
}
};
なんてのをこさえ、
void MyTest::aTest() {
assert_equal<int> p1;
assert_equal<std::string> p2;
int x = 1;
int y = 2;
assert( p1(x,y) ); // "1 != 2" がリポートされる
std::string a = "apple";
assert( p2(a,"orange") ); // "apple != orange" がリポートされる
}
----:----:----:----:----:----:----:----:----:----:----
Fumiki Fukuda (episteme) -- magical, but never a magic