tests/testthat/test-loo_flocker.R

test_that("loo_flocker_onefit works correctly", {
  suppressWarnings(test_loo <- loo_flocker(example_flocker_model_single))
  suppressWarnings(test_loo_thinned <- loo_flocker(example_flocker_model_single, 2))
  suppressWarnings(test_loo_list <- loo_flocker(rep(list(example_flocker_model_single), 2)))
  
  # check error
  expect_error(loo_flocker(), "argument \"x\" is missing, with no default")
  expect_error(loo_flocker(1), "x must be a flocker_fit object or a list of flocker_fit objects")
  expect_error(loo_flocker(list(1)), "x is a list, but x\\[\\[1\\]\\] is not a flocker_fit object.")
  expect_error(loo_flocker(list(example_flocker_model_single, 1)), "x is a list, but x\\[\\[2\\]\\] is not a flocker_fit object.")
  
  # check dims
  expect_equal(attributes(test_loo)$dims, c(8, 100))
  expect_equal(attributes(test_loo_thinned)$dims, c(4, 100))
  
  # check list output
  expect_identical(class(test_loo_list), "list")
  expect_identical(test_loo_list[[1]], test_loo_list[[2]])
  expect_identical(test_loo_list[[1]], test_loo)
})


test_that("loo_flocker_onefit works correctly", {
  # check error
  expect_error(loo_flocker_onefit(1), "x must be a flocker_fit object")
  
  suppressWarnings(test_loo <- loo_flocker_onefit(example_flocker_model_single, thin = NULL))
  suppressWarnings(test_loo_alt <- loo_flocker_onefit(example_flocker_model_single, thin=1))
  suppressWarnings(test_loo_thinned <- loo_flocker_onefit(example_flocker_model_single, thin = 2))
  
  # check dimensions
  expect_equal(attributes(test_loo)$dims, c(8, 100))
  expect_equal(attributes(test_loo_thinned)$dims, c(4, 100))
  
  # check thin = NULL specification returns same output 
  expect_identical(test_loo, test_loo_alt)
})

test_that("loo_flocker_onefit works correctly", {
  # check error
  expect_error(loo_compare_flocker(list(example_flocker_model_single)), "model_list must contain at least two flocker_fit objects.")
  
  # check model naming
  suppressWarnings(test_compare <- loo_compare_flocker(list(example_flocker_model_single, example_flocker_model_single), 
                                      model_names = c("m1", "m2"), thin = 2))
  expect_identical(row.names(test_compare), c("m1", "m2"))
  
  # check test output identical
  expect_true(all(apply(test_compare, 2, diff) == 0))
})
jsocolar/flocker documentation built on Jan. 29, 2025, 11:18 p.m.