
context("Output from a simple linear regression example")

set.seed(1, kind="Mersenne-Twister", normal.kind="Inversion")

test_that("output of create_sampler and MCMCsim is as expected", {
  n <- 1000L
  df <- data.frame(x = rnorm(n))
  df$y <- 1 + df$x + rnorm(n)
  sampler <- create_sampler(y ~ reg(~ x, name="beta"), data=df)
  expect_false(is.null(sampler$draw))
  expect_false(is.null(sampler$start))
  sim <- MCMCsim(sampler, n.iter=2000, n.chain=2, burnin=1000, verbose=FALSE)
  expect_identical(sort(par_names(sim)), c("beta", "llh_", "sigma_"))
  expect_is(n_eff(sim$beta), "numeric")
  expect_is(R_hat(sim$beta), "numeric")
  expect_is(subset(sim$beta, vars=1L, chains=2:1, draws=c(100:n_draws(sim$beta))), "dc")
  expect_is(get_means(sim), "list")
  expect_is(get_sds(sim), "list")
  summ <- summary(sim)
  expect_is(summ, "mcdraws_summary")
  expect_true(all(summ$beta[, "Mean"] - coef(lm(y ~ x, data=df)) < 0.1))
  DIC <- compute_DIC(sim)
  expect_true(DIC["p_DIC"] > 2 && DIC["p_DIC"] < 4)
  WAIC <- compute_WAIC(sim, n)
  expect_true(WAIC["p_WAIC1"] > 2 && WAIC["p_WAIC1"] < 4)
})
