tests/testthat/test-controls.R

test_that("control_bayes", {
    set.seed(123)

    result <- control_bayes()
    expect_equal(
        control_bayes(),
        list(
            warmup = 200,
            thin = 50,
            chains = 1,
            init = "mmrm",
            seed = 1756553742
        )
    )
    set.seed(123)
    result <- control_bayes()
    expect_equal(
        control_bayes(verbose = TRUE),
        list(
            warmup = 200,
            thin = 50,
            chains = 1,
            init = "mmrm",
            seed = 1756553742,
            verbose = TRUE
        )
    )
    expect_error(
        control_bayes(n_samples = 1000),
        "specify the number of samples directly"
    )
    expect_error(
        control_bayes(iter = 1000),
        "specify the number of samples directly"
    )
    expect_error(
        control_bayes(refresh = 1000),
        "of the `refresh` argument here"
    )
})

test_that("prepare_init_vals works as expected", {
    # We use dummy inputs here for simplicity.
    stan_data <- list(R = matrix(2, nrow = 1, ncol = 1))
    mmrm_initial <- structure(
        list(
            beta = 4,
            sigma = list(matrix(c(1, 0, 0, 2), nrow = 2)),
            tau = 3
        ),
        cov_param_names = c("sigma", "tau")
    )

    result_us_default <- prepare_init_vals(
        stan_data = stan_data,
        mmrm_initial = mmrm_initial,
        chains = 1,
        covariance = "us",
        prior_cov = "default"
    )
    expected_us_default <- list(
        list(theta = 8, sigma = mmrm_initial$sigma, tau = mmrm_initial$tau)
    )
    expect_identical(result_us_default, expected_us_default)

    result_us_lkj <- prepare_init_vals(
        stan_data = stan_data,
        mmrm_initial = mmrm_initial,
        chains = 1,
        covariance = "us",
        prior_cov = "lkj"
    )
    expected_us_lkj <- list(
        list(
            theta = 8,
            sigma = mmrm_initial$sigma,
            tau = mmrm_initial$tau,
            sds = list(c(1, sqrt(2))),
            corr_chol = list(diag(2))
        )
    )
    expect_identical(result_us_lkj, expected_us_lkj)
})

test_that("complete_control_bayes works as expected", {
    control <- control_bayes()
    # We use dummy inputs here for simplicity.
    stan_data <- list(R = matrix(1, nrow = 1, ncol = 1))
    mmrm_initial <- structure(
        list(beta = 1, sigma = 1, tau = 1),
        cov_param_names = c("sigma", "tau")
    )
    result <- complete_control_bayes(
        control = control,
        n_samples = 1000,
        quiet = TRUE,
        stan_data = stan_data,
        mmrm_initial = mmrm_initial,
        covariance = "us",
        prior_cov = "default"
    )
    expect_true(is.list(result))
    expect_true(
        is.list(result$init),
        setequal(names(result$init), c("theta", "sigma", "tau"))
    )
})

Try the rbmi package in your browser

Any scripts or data that you put into this service are public.

rbmi documentation built on Nov. 5, 2025, 7:30 p.m.