tests/testthat/test-flock.R

sd <- simulate_flocker_data()
fd_single <- make_flocker_data(sd$obs, sd$unit_covs, sd$event_covs)
fd_single_C <- make_flocker_data(sd$obs, sd$unit_covs)

sd <- simulate_flocker_data(augmented = TRUE)
fd_augmented <- make_flocker_data(sd$obs, sd$unit_covs, sd$event_covs, type = "augmented", n_aug = 10)

sd <- simulate_flocker_data(n_season = 3, multiseason = "colex", multi_init = "explicit")
fd_multi <- make_flocker_data(sd$obs, sd$unit_covs, sd$event_covs, type = "multi")


test_that("flocker_stancode works as expected", {
  # This is effectively a set of tests for `flock` itself, but can be run
  # without actually doing model fitting in Stan
  
  f_occ <- ~ uc1
  f_det <- ~ uc1 + ec1
  f_col <- NULL
  f_ex <- NULL
  f_auto <- NULL
  flocker_data <- fd_single
  data2 <- NULL
  multiseason <- NULL
  multi_init <- NULL
  augmented <- FALSE
  threads <- NULL
  
  expect_type(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                  f_col, f_ex, multi_init, f_auto, augmented, threads),
              "character")
  
  
  f_occ <- ~ uc1 + ec1
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  
  f_occ <- y ~ uc1
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  
  flocker_data <- fd_single_C
  f_occ <- ~ uc1
  f_det <- ~ uc1
  
  expect_type(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                      f_col, f_ex, multi_init, f_auto, augmented, threads),
              "character")
  
  
  flocker_data <- fd_augmented
  f_det <- ~ uc1 + ec1
  augmented <- TRUE
  
  expect_type(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                      f_col, f_ex, multi_init, f_auto, augmented, threads),
              "character")
  
  
  flocker_data <- fd_multi
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  augmented <- FALSE
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  multiseason <- "colex"
  multi_init <- "explicit"
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  f_col <- ~ uc1
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  f_ex <- ~ uc1
  
  expect_type(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                      f_col, f_ex, multi_init, f_auto, augmented, threads),
              "character")
  
  multiseason <- "autologistic"
  multi_init <- "equilibrium"
  
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  f_auto <- ~ uc1
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  f_auto <- NULL
  f_occ <- NULL
  f_ex <- NULL
  expect_error(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                     f_col, f_ex, multi_init, f_auto, augmented, threads))
  f_auto <- ~ uc1
  expect_type(flocker_stancode(f_occ, f_det, flocker_data, data2, multiseason, 
                                      f_col, f_ex, multi_init, f_auto, augmented, threads),
              "character")

})
jsocolar/flocker documentation built on Jan. 29, 2025, 11:18 p.m.