Skip to content

Commit

Permalink
Add more tests for full coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesYang007 committed Jul 30, 2020
1 parent 6aa2edb commit 3e1c744
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 3 deletions.
8 changes: 8 additions & 0 deletions test/reverse/core/pow_unittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,14 @@ TEST_F(pow_fixture, scl_sq_beval)
seed * 8.*scl_expr.get());
}

TEST_F(pow_fixture, scl_sq_x_zero_beval)
{
scl_expr.get() = 0;
scl_sq.feval();
scl_sq.beval(seed, 0,0, util::beval_policy::single);
EXPECT_DOUBLE_EQ(scl_expr.get_adj(0,0), 0);
}

TEST_F(pow_fixture, scl_inv_feval)
{
value_t res = scl_inv.feval();
Expand Down
19 changes: 19 additions & 0 deletions test/reverse/stat/bernoulli_unittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@ TEST_F(bernoulli_fixture, ss_feval)
EXPECT_NEAR(res, -0.0001000050003334, tol);
}

TEST_F(bernoulli_fixture, ss_x_one_feval)
{
scl_x.get() = 1;
bind(ss_bernoulli);
value_t res = ss_bernoulli.feval();
EXPECT_NEAR(res, std::log(scl_p.get()), tol);
}

TEST_F(bernoulli_fixture, ss_feval_p_below_range)
{
scl_p.get() = 0;
Expand Down Expand Up @@ -99,6 +107,17 @@ TEST_F(bernoulli_fixture, ss_beval)
tol);
}

TEST_F(bernoulli_fixture, ss_x_one_beval)
{
scl_x.get() = 1;
bind(ss_bernoulli);
ss_bernoulli.feval();
ss_bernoulli.beval(1, 0, 0, util::beval_policy::single);
EXPECT_NEAR(scl_p.get_adj(),
10000.00000000000000000000,
tol);
}

TEST_F(bernoulli_fixture, ss_beval_p_below_range)
{
scl_p.get() = -0.00001;
Expand Down
32 changes: 32 additions & 0 deletions test/reverse/stat/normal_unittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,14 @@ TEST_F(normal_fixture, vsv_feval)
EXPECT_DOUBLE_EQ(res, -54448.5761343555350322);
}

TEST_F(normal_fixture, vsv_feval_not_pos_def)
{
vec_sigma.get()(0) = -1;
bind(vsv_normal);
value_t res = vsv_normal.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(normal_fixture, vsv_beval)
{
bind(vsv_normal);
Expand Down Expand Up @@ -267,6 +275,14 @@ TEST_F(normal_fixture, vvv_feval)
EXPECT_DOUBLE_EQ(res, -57796.8420570641465019);
}

TEST_F(normal_fixture, vvv_feval_not_pos_def)
{
vec_sigma.get(0,0) = 0;
bind(vvv_normal);
value_t res = vvv_normal.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(normal_fixture, vvv_beval)
{
bind(vvv_normal);
Expand Down Expand Up @@ -336,6 +352,14 @@ TEST_F(normal_fixture, vsm_feval)
EXPECT_DOUBLE_EQ(res, -8.8105250497069019);
}

TEST_F(normal_fixture, vsm_feval_not_pos_def)
{
mat_sigma.get().setZero();
bind(vsm_normal);
value_t res = vsm_normal.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(normal_fixture, vsm_beval)
{
bind(vsm_normal);
Expand Down Expand Up @@ -373,6 +397,14 @@ TEST_F(normal_fixture, vvm_selfadj_feval)
EXPECT_DOUBLE_EQ(res, -7.3649692930088602);
}

TEST_F(normal_fixture, vvm_selfadj_feval_not_pos_def)
{
mat_selfadj_sigma.get().setZero();
bind(vvm_selfadj_normal);
value_t res = vvm_selfadj_normal.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(normal_fixture, vvm_selfadj_beval)
{
bind(vvm_selfadj_normal);
Expand Down
11 changes: 8 additions & 3 deletions test/reverse/stat/ref/bernoulli_ref.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,20 @@ def logpmf(x, p):
def ss_feval():
return [logpmf(scl_x, scl_p)]

def ss_x_one_feval():
return [logpmf(1, scl_p)]

def ss_beval():
if scl_x == 1:
adj = 1./scl_p
if scl_x == 0:
adj = -1./(1-scl_p)
return [adj]

def ss_x_one_beval():
adj = 1./scl_p
return [adj]

def vs_feval():
return [logpmf(vec_x, scl_p)]

Expand All @@ -40,9 +47,7 @@ def adj(x, p):
return dp

if __name__ == '__main__':
res = [logpmf(vec_x[np.arange(0, len(vec_x)) != 1],
vec_p[np.arange(0, len(vec_x)) != 1])]
#res = vv_beval()
res = ss_x_one_beval()

for r in res:
print('{0:.20f}'.format(r))
43 changes: 43 additions & 0 deletions test/reverse/stat/uniform_unittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,14 @@ TEST_F(uniform_fixture, sss_feval)
EXPECT_DOUBLE_EQ(res, -1.3256416139079406);
}

TEST_F(uniform_fixture, sss_feval_out_of_range)
{
scl_x.get() = -100;
bind(sss_uniform);
value_t res = sss_uniform.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(uniform_fixture, sss_beval)
{
bind(sss_uniform);
Expand All @@ -102,6 +110,14 @@ TEST_F(uniform_fixture, vss_feval)
EXPECT_DOUBLE_EQ(res, -3.9769248417238217);
}

TEST_F(uniform_fixture, vss_feval_out_of_range)
{
vec_x.get(0,0) = -10000;
bind(vss_uniform);
value_t res = vss_uniform.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(uniform_fixture, vss_beval)
{
bind(vss_uniform);
Expand All @@ -121,6 +137,15 @@ TEST_F(uniform_fixture, vsv_feval)
EXPECT_DOUBLE_EQ(res, -4.3915297872269807);
}

TEST_F(uniform_fixture, vsv_feval_out_of_range)
{
vec_x.get(0,0) = -100000;
bind(vsv_uniform);
vsv_uniform.feval();
value_t res = vsv_uniform.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(uniform_fixture, vsv_beval)
{
bind(vsv_uniform);
Expand All @@ -146,6 +171,15 @@ TEST_F(uniform_fixture, vvs_feval)
EXPECT_DOUBLE_EQ(res, -1.3266062626903801);
}

TEST_F(uniform_fixture, vvs_feval_out_of_range)
{
vec_x.get(0,0) = -10000;
bind(vvs_uniform);
vvs_uniform.feval();
value_t res = vvs_uniform.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(uniform_fixture, vvs_beval)
{
bind(vvs_uniform);
Expand All @@ -172,6 +206,15 @@ TEST_F(uniform_fixture, vvv_feval)
EXPECT_DOUBLE_EQ(res, -1.2444888363909485);
}

TEST_F(uniform_fixture, vvv_feval_out_of_range)
{
vec_x.get(0,0) = -10000;
bind(vvv_uniform);
vvv_uniform.feval();
value_t res = vvv_uniform.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(uniform_fixture, vvv_beval)
{
bind(vvv_uniform);
Expand Down
8 changes: 8 additions & 0 deletions test/reverse/stat/wishart_unittest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,14 @@ TEST_F(wishart_fixture, feval)
EXPECT_DOUBLE_EQ(res, -12.55942947411780252764);
}

TEST_F(wishart_fixture, feval_invalid)
{
v.get().setZero();
bind(wishart);
value_t res = wishart.feval();
EXPECT_DOUBLE_EQ(res, util::neg_inf<value_t>);
}

TEST_F(wishart_fixture, beval)
{
bind(wishart);
Expand Down

0 comments on commit 3e1c744

Please sign in to comment.