These functions allow for testing of multiple columns (vars) of a data
frame (data), with an optional filter (flt), using an arbitrary function
(func).
expect_all(
vars,
func,
flt = TRUE,
data = get_testdata(),
args = list(),
func_desc = NULL
)
expect_any(
vars,
func,
flt = TRUE,
data = get_testdata(),
args = list(),
func_desc = NULL
)<tidy-select> A set of columns to
test.
A function to use for testing that takes a vector as the first argument and returns a logical vector of the same length showing whether an element passed or failed.
<data-masking> A filter specifying
a subset of the data frame to test.
A data frame to test. The global test data is used by default.
A named list of arguments to pass to func.
A human friendly description of func to use in the
expectation failure message.
expect_*() functions are mainly called for their side effects. The
expectation signals its result (e.g. "success", "failure"), which is logged
by the current test reporter. In a non-testing
context the expectation will raise an error with class
expectation_failure if it fails.
expect_allany() tests the columns in vars to see whether func
returns TRUE for each of them, and combines the results for each row using
the function in allany. Both expect_all() and expect_any() are wrappers
around expect_allany().
expect_all() tests the vars to see whether func returns TRUE for
all of them (i.e. whether the conjunction of results of applying func to
each of the vars is TRUE).
expect_any() tests the vars to see whether func returns TRUE for
any of them (i.e. whether the disjunction of the results of applying func
to each of the vars is TRUE).
chk_*() functions such as chk_values()
Other data expectations:
conditional-expectations,
datacomp-expectations,
date-expectations,
exclusivity-expectations,
expect_depends(),
label-expectations,
pattern-expectations,
proportion-expectations,
text-expectations,
uniqueness-expectations,
value-expectations
# Check that every 4-cylinder car has an engine displacement of < 100 cubic
# inches *AND* < 100 horsepower
try(
expect_all(
vars = c(disp, hp),
func = chk_range,
flt = (cyl == 4),
args = list(min = 0, max = 100),
data = mtcars
)
)
#> Error : `mtcars` has 7 records failing `chk_range` on variable `disp` and/or `hp`.
#> Variable set: `disp, hp`
#> Filter: `(cyl == 4)`
#> Arguments: `min = 0, max = 100`
# Check that every 4-cylinder car has an engine displacement of < 100 cubic
# inches *OR* < 100 horsepower
try(
expect_any(
vars = c(disp, hp),
func = chk_range,
flt = (cyl == 4),
args = list(min = 0, max = 100),
data = mtcars
)
)
#> Error : `mtcars` has 1 records failing `chk_range` on variable `disp, hp`.
#> Filter: `(cyl == 4)`
#> Arguments: `min = 0, max = 100`
# Check that all variables are numeric:
try(expect_all(
vars = everything(),
func = is.numeric,
data = iris
))
#> Error : `iris` has 150 records failing `is.numeric` on variable `Species`.
#> Variable set: `everything()`
#> Filter: None
#> Arguments: ``