///
//以下代码来自google glog,备注由我自己添加,见笑啦!
//当表达式cond的结果为FALSE时,打印日志并退出
#define EXPECT_TRUE(cond) /
do { /
if (!(cond)) { /
fprintf(stderr, "Check failed: %s/n", #cond); /
exit(1); /
} /
} while (0)
//当表达式cond的结果为TURE时,打印日志并退出
#define EXPECT_FALSE(cond) EXPECT_TRUE(!(cond))
//op是操作符,例如“==” “!=" “>=" “<=" “&&" “||" ">“ “<" 等等
//当(val1 op val2)的值为FALSE时,打印日志并退出
#define EXPECT_OP(op, val1, val2) /
do { /
if (!((val1) op (val2))) { /
fprintf(stderr, "Check failed: %s %s %s/n", #val1, #op, #val2); /
exit(1); /
} /
} while (0)
//对上面宏的实用
#define EXPECT_EQ(val1, val2) EXPECT_OP(==, val1, val2)
#define EXPECT_NE(val1, val2) EXPECT_OP(!=, val1, val2)
#define EXPECT_GT(val1, val2) EXPECT_OP(>, val1, val2)
#define EXPECT_LT(val1, val2) EXPECT_OP(<, val1, val2)
//验证val1和val2是否相等 精确度为0.001
#define EXPECT_DOUBLE_EQ(val1, val2) /
do { /
if (((val1) < (val2) - 0.001 || (val1) > (val2) + 0.001)) { /
fprintf(stderr, "Check failed: %s == %s/n", #val1, #val2); /
exit(1); /
} /
} while (0)
//验证C字符创是否相等
#define EXPECT_STREQ(val1, val2) /
do { /
if (strcmp((val1), (val2)) != 0) { /
fprintf(stderr, "Check failed: streq(%s, %s)/n", #val1, #val2); /
exit(1); /
} /
} while (0)