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: ``