### Pass test ------------------------------------------------------------------
# type
expect_silent(check_class("chr", type = "character"))
expect_silent(check_class(2, type = "numeric"))
expect_silent(check_class(-1.4, type = "numeric"))
expect_silent(check_class(2L, type = "integer"))
expect_silent(check_class(TRUE, type = "logical"))
expect_silent(check_class(FALSE, type = "logical"))
expect_silent(check_class(NULL, type = "NULL"))
expect_silent(check_class(data.frame(A = c(1, 2)), type = "data.frame"))
# n
expect_silent(check_class("chr", type = "character", n = 1))
expect_silent(check_class(c("chr", "chr2"), type = "character", n = 2))
expect_silent(check_class("chr", type = "character", n = 1L))
# allowNULL (Exception from e.g. character)
expect_silent(check_class(NULL, type = "character", allowNULL = TRUE))
expect_silent(check_class(NULL, type = "character", allowNULL = TRUE, n = 1))
expect_silent(check_class(NULL, type = "numeric", allowNULL = TRUE, n = 2))
### Errors ---------------------------------------------------------------------
# var
expect_error(check_class(type = "character"))
# type
expect_error(check_class(var = "character"))
expect_error(check_class(id, type = 12), class = "check_class_type_error")
# n
expect_error(
check_class(var = "chr", type = "character", n = TRUE),
class = "check_class_n_error"
)
expect_error(
check_class(var = "chr", type = "character", n = -1),
class = "check_class_n_error",
pattern = "^`n` must be not negative numeric\\(1\\) or integer\\(1\\)\\.$"
)
expect_error(
check_class(var = "chr", type = "character", n = c(1, 2)),
class = "check_class_n_error",
pattern = paste("^`n` must be numeric\\(1\\) or integer\\(1\\),",
"not of class \"numeric\\(2\\)\"\\.$")
)
# allowNULL
expect_error(
check_class(id, type = "numeric", allowNULL = "x"),
class = "check_class_allowNULL_error"
)
expect_error(
check_class(id, type = "numeric", allowNULL = NULL),
class = "check_class_allowNULL_error"
)
expect_error(
check_class(id, type = "numeric", allowNULL = 12),
class = "check_class_allowNULL_error"
)
# individual error generated by function
expect_error(check_class(2, "character"), class = "eval_2_error")
expect_error(check_class(2, "character"), class = "rlang_error")
expect_error(check_class(2, "data.frame"), class = "eval_2_error")
expect_error(check_class(2, "data.frame"), class = "rlang_error")
expect_error(check_class(TRUE, "data.frame"), class = "eval_TRUE_error")
expect_error(check_class(TRUE, "data.frame"), class = "rlang_error")
expect_error(
check_class(NULL, "character", allowNULL = FALSE),
class = "eval_NULL_error"
)
expect_error(
check_class(NULL, "character", allowNULL = FALSE),
class = "rlang_error"
)
id <- 1
err <- tryCatch(
check_class(id, "character", allowNULL = FALSE),
error = function(err) err
)
expect_true(rlang::inherits_all(err, c("eval_id_error", "rlang_error")))
expect_equal(err$value, 1)
expect_equal(err$current_class, "numeric")
# check typical use in function
fun <- function(x, n = NULL) {
testr::check_class(x, "numeric", allowNULL = TRUE, n = n)
TRUE
}
expect_true(fun(1))
expect_true(fun(1, n = 1))
expect_true(fun(NULL))
expect_error(
fun("1"),
class = "fun_x_error",
pattern = "`x` must be numeric, not of class \"character\"\\."
)
expect_error(
fun(1L),
class = "fun_x_error",
pattern = "`x` must be numeric, not of class \"integer\"\\."
)
expect_error(
fun(1, n = 2),
"fun_x_error",
pattern = "`x` must be numeric\\(2\\), not of class \"numeric\\(1\\)\"\\."
)
expect_error(
fun(1, n = 0),
"fun_x_error",
pattern = "`x` must be numeric\\(0\\), not of class \"numeric\\(1\\)\"\\."
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.