diff --git a/R/errorChecks.r b/R/errorChecks.r index 1c27eff..5981273 100644 --- a/R/errorChecks.r +++ b/R/errorChecks.r @@ -233,15 +233,15 @@ errorChecks <- function(taxa = NULL, site = NULL, survey = NULL, replicate = NUL ### check BUGS parameters ### if(!is.null(c(n_iterations, burnin, thinning, n_chains))){ - - if(burnin > n_iterations) stop('Burn in (burnin) must not be larger that the number of iteration (n_iterations)') - if(thinning > n_iterations) stop('thinning must not be larger that the number of iteration (n_iterations)') - if(!is.numeric(n_iterations)) stop('n_iterations should be numeric') if(!is.numeric(burnin)) stop('burnin should be numeric') if(!is.numeric(thinning)) stop('thinning should be numeric') if(!is.numeric(n_chains)) stop('n_chains should be numeric') + + if(burnin > n_iterations) stop('Burn in (burnin) must not be larger that the number of iteration (n_iterations)') + if(thinning > n_iterations) stop('thinning must not be larger that the number of iteration (n_iterations)') + } if(!is.null(seed)){ diff --git a/inst/doc/sparta_vignette.pdf b/inst/doc/sparta_vignette.pdf deleted file mode 100644 index 7567628..0000000 Binary files a/inst/doc/sparta_vignette.pdf and /dev/null differ diff --git a/tests/testthat/testerrorChecks.R b/tests/testthat/testerrorChecks.R new file mode 100644 index 0000000..6208b52 --- /dev/null +++ b/tests/testthat/testerrorChecks.R @@ -0,0 +1,167 @@ +context("Test errorChecks") + +set.seed(seed = 128) + +# Create data +n <- 3000 #size of dataset +nyr <- 10 # number of years in data +nSamples <- 30 # set number of dates +nSites <- 15 # set number of sites + +# Create somes dates +first <- as.POSIXct(strptime("2010/01/01", "%Y/%m/%d")) +last <- as.POSIXct(strptime(paste(2010+(nyr-1),"/12/31", sep=''), "%Y/%m/%d")) +dt <- last-first +rDates <- first + (runif(nSamples)*dt) + +# taxa are set as random letters +taxa <- sample(letters, size = n, TRUE) + +# three sites are visited randomly +site <- sample(paste('A', 1:nSites, sep=''), size = n, TRUE) + +# the date of visit is selected at random from those created earlier +time_period <- sample(rDates, size = n, TRUE) +time_period_missing <- sample(c(rDates, NA), size = n, TRUE) + +dist_sub <- rnorm(n, 10, 1) +sim_sub <- rnorm(n, 10, 1) + +dist_sub_fac <- as.factor(rnorm(n, 10, 1)) +sim_sub_fac <- as.factor(rnorm(n, 10, 1)) + + +dist_sub_chr <- as.character(rnorm(n, 10, 1)) +sim_sub_chr <- as.character(rnorm(n, 10, 1)) + +dist_sub_fac <- as.factor(rnorm(n, 10, 1)) +sim_sub_fac <- as.factor(rnorm(n, 10, 1)) + + +# combine this to a dataframe +df <- data.frame(taxa = taxa, + site = site, + time_period = as.character(time_period), + time_period_missing = time_period_missing, + dist_sub = dist_sub, + sim_sub = sim_sub, + dist_sub_chr = dist_sub_chr, + sim_sub_chr = sim_sub_chr, + dist_sub_fac = dist_sub_fac, + sim_sub_fac = sim_sub_fac) + + +useIterations_num <- 1 +useIterations_chr <- "TRUE" + + +temp <- tempfile() + +dir.create(temp) + +test_that("Test errors", { + expect_error(errorChecks(startDate = df$time_period), + 'startDate is not in a date format. This should be of class "Date" or "POSIXct"') + + expect_error(errorChecks(startDate = df$time_period_missing), + 'startDate must not contain NAs') + + expect_error(errorChecks(Date = df$time_period), + 'Date must be a data.frame or date vector') + + expect_error(errorChecks(Date = df$time_period_missing), + 'Date must not contain NAs') + + expect_error(errorChecks(endDate = df$time_period), + 'endDate is not in a date format. This should be of class "Date" or "POSIXct"') + + expect_error(errorChecks(endDate = df$time_period_missing), + 'endDate must not contain NAs') + + expect_error(errorChecks(dist_sub = df$dist_sub_chr, sim_sub = df$sim_sub), + 'dist_sub must be integer or numeric') + + expect_error(errorChecks(dist_sub = df$dist_sub, sim_sub = df$sim_sub_chr), + 'sim_sub must be integer or numeric') + + expect_error(errorChecks(dist_sub = df$dist_sub_fac, sim_sub = df$sim_sub), + 'dist_sub must be integer or numeric') + + expect_error(errorChecks(dist_sub = df$dist_sub, sim_sub = df$sim_sub_fac), + 'sim_sub must be integer or numeric') + + expect_error(errorChecks(useIterations = useIterations_chr), + 'useIterations must be logical') + + expect_error(errorChecks(useIterations = useIterations_num), + 'useIterations must be logical') + + expect_error(errorChecks(iterations = "1000"), + 'iterations must be numeric or integer') + + expect_error(errorChecks(family = "Poisson"), + 'family must be either Binomial or Bernoulli') + + expect_error(errorChecks(n_iterations = 1000, burnin = 500, thinning = 1100, n_chains = 3), + 'thinning must not be larger that the number of iteration (n_iterations)', + fixed = TRUE) + + expect_error(errorChecks(n_iterations = "1000", burnin = 500, thinning = 5, n_chains = 3), + 'n_iterations should be numeric') + + expect_error(errorChecks(n_iterations = 1000, burnin = "500", thinning = 5, n_chains = 3), + 'burnin should be numeric') + + expect_error(errorChecks(n_iterations = 1000, burnin = 500, thinning = "5", n_chains = 3), + 'thinning should be numeric') + + expect_error(errorChecks(n_iterations = 1000, burnin = 500, thinning = 5, n_chains = "3"), + 'n_chains should be numeric') + + expect_error(errorChecks(seed = "1"), + 'seed muct be numeric') + + expect_error(errorChecks(year_col = NA, start_col = NA, end_col = time_period[1]), + 'year_col or start_col and end_col must be given') + + expect_error(errorChecks(year_col = NA, start_col = df$time_period[1], end_col = NA), + 'year_col or start_col and end_col must be given') + + expect_error(errorChecks(year_col = NA, start_col = df$time_period[1], end_col = df$time_period[1]), + 'year_col cannot be used at the same time as start_col and end_col') + + expect_error(errorChecks(phi = 0.1), + "phi is outside permitted range of 0.50 to 0.95") + + expect_error(errorChecks(phi = 0.99), + "phi is outside permitted range of 0.50 to 0.95") + + expect_error(errorChecks(alpha = 0.05), + "alpha is outside permitted range of 0.08 to 0.50") + + expect_error(errorChecks(alpha = 0.99), + "alpha is outside permitted range of 0.08 to 0.50") + + expect_error(errorChecks(non_benchmark_sp = c(1,5,10,12)), + 'non_benchmark_sp must be a character vector') + + expect_error(errorChecks(non_benchmark_sp = 12), + 'non_benchmark_sp must be a character vector') + + expect_error(errorChecks(fres_site_filter = c(1,5,10,12)), + 'fres_site_filter must be a character vector') + + expect_error(errorChecks(fres_site_filter = 12), + 'fres_site_filter must be a character vector') + + expect_error(errorChecks(time_periods = as.matrix(df$time_period)), + 'time_periods should be a data.frame. e.g. "data.frame(start=c(1980,1990),end=c(1989,1999))"', + fixed = TRUE) + + expect_error(errorChecks(frespath = temp), + "filepath is not the path to a '.exe' file") + + expect_error(errorChecks(frespath = "file.exe"), + 'file.exe does not exist') + +})