Nothing
# packages
# {
# library(nichetools)
# library(testthat)
# }
#
test_that("Test if object type returned is list ", {
n_ellipse <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE
)
expect_type(object = n_ellipse, type = "list")
})
test_that("Test if object class returned is data.frame ", {
n_ellipse_test <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE
)
expect_s3_class(object = n_ellipse_test, class = c("tbl_df", "tbl",
"data.frame")
)
# excreted dimensions
expected_rows <- 4000
expected_cols <- 4
})
test_that("Test if object class returned is data.frame ", {
n_ellipse_test <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
random = FALSE,
message = FALSE
)
expect_s3_class(object = n_ellipse_test, class = c("tbl_df", "tbl",
"data.frame")
)
# excreted dimensions
expected_rows <- 400000
expected_cols <- 4
# Check the dimensions using expect_equal
expect_equal(nrow(n_ellipse_test), expected_rows,
info = "Number of rows is not as expected.")
expect_equal(ncol(n_ellipse_test), expected_cols,
info = "Number of columns is not as expected.")
})
test_that("Test if objects supplied are data.frame ", {
# Test with invalid inputs (non-data.frames)
invalid_dat_mu <- c(1, 2, 3, 4, 5)
invalid_dat_sigma <- matrix(1:10, ncol = 2)
expect_error(
niche_ellipse(dat_mu = invalid_dat_mu, dat_sigma = sigma_est_wide)
, "Input 'dat_mu' must be class data.frame.")
expect_error(
niche_ellipse(dat_mu = mu_est_long, dat_sigma = invalid_dat_sigma)
, "Input 'dat_sigma' must be class data.frame.")
expect_error(
niche_ellipse(dat_mu = invalid_dat_mu, dat_sigma = invalid_dat_sigma)
, "Input 'dat_mu' must be class data.frame.")
})
test_that("Check if naming works", {
sigma_est_wide <- sigma_est_wide |>
dplyr::rename(
cal_d13c = d13c,
cal_d15n = d15n
)
expect_no_error(
n_ellipse_test <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE,
isotope_a = "cal_d13c",
isotope_b = "cal_d15n",
)
)
expect_true("cal_d15n" %in% names(n_ellipse_test))
expect_true("cal_d13c" %in% names(n_ellipse_test))
expected_names <- c("sample_name", "sample_number",
"cal_d13c", "cal_d15n")
expect_equal(names(n_ellipse_test), expected_names)
})
test_that("Test if isotope_a errors if not a charcters", {
expect_error(niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
message = FALSE,
isotope_a = 6), regexp = "Argument 'isotope_a' must be a character."
)
})
test_that("Test if isotope_b errors if not a charcters", {
expect_error(niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE,
isotope_b = 4), regexp = "Argument 'isotope_b' must be a character."
)
})
test_that("Parameter 'p_ell' is can take other values than 0.95", {
# Test case 1: p_ell is 0.75,
expect_no_error(
n_ellipse_test <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE,
p_ell = 0.75
)
)
expect_equal(n_ellipse_test$d15n[1], 13.8, tolerance = 0.1)
expect_equal(n_ellipse_test$d13c[1], -22.4, tolerance = 0.1)
})
test_that("Parameter 'p_ell' is set and validated correctly", {
# Test case 1: p_ell is NULL, it should be set to 0.95
expect_no_error(
n_ellipse_test <- niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE,
)
)
expect_equal(n_ellipse_test$d15n[1], 14.3, tolerance = 0.1)
expect_equal(n_ellipse_test$d13c[1], -21.7, tolerance = 0.1)
})
test_that("p_ell errors when given a charcter or value outside of range", {
# Test case 3: p_ell is not numeric, it should raise an error
expect_error(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
p_ell = "invalid"),
"Parameter 'p_ell' must be a numeric value between 0 and 1.")
# Test case 4: p_ell is numeric but outside the valid range,
expect_error(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
p_ell = 1.5),
"Parameter 'p_ell' must be a numeric value between 0 and 1.")
}
)
test_that("Test print out of message for run time", {
expect_message(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4),
"Total time processing was")
})
test_that("test print out doesn't show when set to false", {
expect_no_message(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
message = FALSE)
)
})
test_that("test 'random' errors apprpriately", {
# Test case 1: p_ell is NULL, it should be set to 0.95
expect_error(niche_ellipse(
dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
set_seed = 4,
random = NA,
message = FALSE,
),
regexp = "Argument 'random' is a logical that is TRUE or FALSE."
)
})
test_that("set_seed raises error if non-numeric value is passed", {
expect_error(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
random = TRUE,
message = FALSE,
set_seed = "abc"),
"Argument 'set_seed' must be a numeric")
})
test_that("n defaults to 10 when random is TRUE", {
result <- niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
random = TRUE,
message = FALSE)
n_sample <- length(unique(result$sample_number))
expect_equal(n_sample, 10)
})
test_that("n raises error if non-numeric value is passed", {
expect_error(niche_ellipse(dat_mu = mu_est_long,
dat_sigma = sigma_est_wide,
random = TRUE,
message = FALSE,
n = "abc"),
"Argument 'n' must be a numeric")
})
# test_that("Test message output", {
# time_spent <- 0.03
# time_unit <- "secs"
#
#
# expect_message(niche_ellipse(
# dat_mu = mu_est_long,
# dat_sigma = sigma_est_wide,
# random = TRUE,
# set_seed = 14,
# message = TRUE),
# paste("Total time processing was", time_spent, time_unit)
# )
# })
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.