# `check_bool()` checks

    Code
      err(checker(, check_bool))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE` or `FALSE`, not absent.
    Code
      err(checker(NA, check_bool))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE` or `FALSE`, not `NA`.
    Code
      err(checker(NULL, check_bool))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE` or `FALSE`, not `NULL`.
    Code
      err(checker(lgl(), check_bool, allow_na = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE`, `FALSE`, or `NA`, not an empty logical vector.
    Code
      err(checker(c(TRUE, FALSE), check_bool, allow_na = TRUE, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE`, `FALSE`, `NA`, or `NULL`, not a logical vector.
    Code
      err(checker(1, check_bool))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be `TRUE` or `FALSE`, not the number 1.

# `check_string()` checks

    Code
      err(checker("", check_string, allow_empty = FALSE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not the empty string "".
    Code
      err(checker(, check_string))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not absent.
    Code
      err(checker(NA, check_string))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not `NA`.
    Code
      err(checker(NULL, check_string))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not `NULL`.
    Code
      err(checker(chr(), check_string, allow_na = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string or `NA`, not an empty character vector.
    Code
      err(checker(na_chr, check_string))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not a character `NA`.
    Code
      err(checker(c("", ""), check_string, allow_na = TRUE, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, `NA`, or `NULL`, not a character vector.
    Code
      err(checker(1, check_string))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a single string, not the number 1.

# `check_number_whole()` checks

    Code
      err(checker(, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not absent.
    Code
      err(checker(NA, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not `NA`.
    Code
      err(checker(NULL, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not `NULL`.
    Code
      err(checker(int(), check_number_whole, allow_na = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number or `NA`, not an empty integer vector.
    Code
      err(checker(na_dbl, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not a numeric `NA`.
    Code
      err(checker(na_int, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not an integer `NA`.
    Code
      err(checker(10:11, check_number_whole, allow_na = TRUE, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, `NA`, or `NULL`, not an integer vector.
    Code
      err(checker(10.5, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not the number 10.5.
    Code
      err(checker(Inf, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not `Inf`.
    Code
      err(checker(-Inf, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number, not `-Inf`.
    Code
      err(checker(1, max = 0, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number smaller than or equal to 0, not the number 1.
    Code
      err(checker(-1, min = 0, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number larger than or equal to 0, not the number -1.
    Code
      err(checker(10, min = 1, max = 5, check_number_whole))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a whole number between 1 and 5, not the number 10.
    Code
      err(checker(10, min = NA, check_number_whole))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `min` must be a single double value.
    Code
      err(checker(10, min = NaN, check_number_whole))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `min` must be a number, not missing.
    Code
      err(checker(10, max = NaN, check_number_whole))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `max` must be a number, not missing.

# `check_number_decimal()` checks

    Code
      err(checker(, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not absent.
    Code
      err(checker(NA, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not `NA`.
    Code
      err(checker(NULL, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not `NULL`.
    Code
      err(checker(int(), check_number_decimal, allow_na = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number or `NA`, not an empty integer vector.
    Code
      err(checker(na_dbl, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not a numeric `NA`.
    Code
      err(checker(na_int, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not an integer `NA`.
    Code
      err(checker(10:11, check_number_decimal, allow_na = TRUE, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, `NA`, or `NULL`, not an integer vector.
    Code
      err(checker(Inf, check_number_decimal, allow_infinite = FALSE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not `Inf`.
    Code
      err(checker(-Inf, check_number_decimal, allow_infinite = FALSE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a number, not `-Inf`.
    Code
      err(checker(10, min = NA, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `min` must be a single double value.
    Code
      err(checker(10, min = NaN, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `min` must be a number, not missing.
    Code
      err(checker(10, max = NaN, check_number_decimal))
    Output
      <error/rlang_error>
      Error in `check()`:
      ! `max` must be a number, not missing.

# `check_symbol()` checks

    Code
      err(checker(, check_symbol))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol, not absent.
    Code
      err(checker(NULL, check_symbol))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol, not `NULL`.
    Code
      err(checker(TRUE, check_symbol))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol, not `TRUE`.
    Code
      err(checker(alist(foo, bar), check_symbol, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol or `NULL`, not a list.
    Code
      err(checker("foo", check_symbol))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol, not the string "foo".
    Code
      err(checker(quote(foo()), check_symbol))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a symbol, not a call.

# `check_call()` checks

    Code
      err(checker(, check_call))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a defused call, not absent.
    Code
      err(checker(NULL, check_call))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a defused call, not `NULL`.
    Code
      err(checker(TRUE, check_call))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a defused call, not `TRUE`.
    Code
      err(checker(alist(foo(), bar()), check_call, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a defused call or `NULL`, not a list.
    Code
      err(checker(quote(foo), check_call))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a defused call, not a symbol.

# `check_environment()` checks

    Code
      err(checker(, check_environment))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be an environment, not absent.
    Code
      err(checker(NULL, check_environment))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be an environment, not `NULL`.
    Code
      err(checker(FALSE, check_environment))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be an environment, not `FALSE`.
    Code
      err(checker(list(env(), env()), check_environment, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be an environment or `NULL`, not a list.

# `check_formula()` checks

    Code
      err(checker(, check_formula))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a formula, not absent.
    Code
      err(checker(NULL, check_formula))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a formula, not `NULL`.
    Code
      err(checker(TRUE, check_formula))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a formula, not `TRUE`.
    Code
      err(checker(quote(~foo), check_formula))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be an evaluated formula, not a defused one.

# `check_formula(allow_unevaluated = TRUE)` accepts unevaluated formulas

    Code
      err(checker(TRUE, check_formula, allow_unevaluated = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a formula, not `TRUE`.

# non-numeric types are not numbers

    Code
      (expect_error(check_number_whole(factor("a"))))
    Output
      <error/rlang_error>
      Error:
      ! `factor("a")` must be a whole number, not a <factor> object.
    Code
      (expect_error(check_number_decimal(as.Date("2000-01-01"))))
    Output
      <error/rlang_error>
      Error:
      ! `as.Date("2000-01-01")` must be a number, not a <Date> object.

# `check_data_frame()` checks

    Code
      err(checker(, check_data_frame))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a data frame, not absent.
    Code
      err(checker(NULL, check_data_frame))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a data frame, not `NULL`.
    Code
      err(checker(list(data.frame(), data.frame()), check_data_frame, allow_null = TRUE))
    Output
      <error/rlang_error>
      Error in `checker()`:
      ! `foo` must be a data frame or `NULL`, not a list.

