#include "logval.h" #include #include class LogValTest : public testing::Test { protected: virtual void SetUp() { } virtual void TearDown() { } }; using namespace std; TEST_F(LogValTest,Order) { LogVal a(-0.3); LogVal b(0.3); LogVal c(2.4); EXPECT_LT(a,b); EXPECT_LT(b,c); EXPECT_LT(a,c); EXPECT_FALSE(b < a); EXPECT_FALSE(c < a); EXPECT_FALSE(c < b); EXPECT_FALSE(c < c); EXPECT_FALSE(b < b); EXPECT_FALSE(a < a); } TEST_F(LogValTest,Negate) { LogVal x(-2.4); LogVal y(2.4); y.negate(); EXPECT_FLOAT_EQ(x,y); } TEST_F(LogValTest,Inverse) { LogVal x(1/2.4); LogVal y(2.4); EXPECT_FLOAT_EQ(x,y.inverse()); } TEST_F(LogValTest,Minus) { LogVal x(12); LogVal y(2); LogVal z1 = x - y; LogVal z2 = x; z2 -= y; EXPECT_FLOAT_EQ(z1, z2); EXPECT_FLOAT_EQ(z1, 10.0); EXPECT_FLOAT_EQ(y - x, -10.0); } TEST_F(LogValTest,TestOps) { LogVal x(-12.12); LogVal y(x); cerr << x << endl; cerr << (x*y) << endl; cerr << (x*y + x) << endl; cerr << (x + x*y) << endl; cerr << log1p(-0.5) << endl; LogVal aa(0.2); LogVal bb(-0.3); cerr << (aa + bb) << endl; cerr << (bb + aa) << endl; EXPECT_FLOAT_EQ((aa + bb), (bb + aa)); EXPECT_FLOAT_EQ((aa + bb), -0.1); } TEST_F(LogValTest,TestSizes) { cerr << sizeof(LogVal) << endl; cerr << sizeof(LogVal) << endl; cerr << sizeof(void*) << endl; } int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }