These functions test whether multiple conditions coexist.
expect_cond(cond1, cond2, data = get_testdata())
expect_base(
var,
base,
miss = getOption("testdat.miss"),
missing_valid = FALSE,
data = get_testdata()
)
<data-masking
> First condition
(antecedent) for consistency check.
<data-masking
> Second condition
(consequent) for consistency check.
A data frame to test. The global test data is used by default.
An unquoted column name to test.
<data-masking
> The condition that
determines which records should be non-missing.
A vector of values to be treated as missing. The testdat.miss option is used by default.
Should missing values be treated as valid for records
meeting the base
condition? This allows 'one way' base checks. This is
FALSE
by default.
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_cond()
: Checks the coexistence of two
conditions. It can be read as "if cond1
then cond2
".
expect_base()
: A special case that checks missing data
against a specified condition. It can be read as "if base
then var
not
missing, if not base
then var
missing".
my_survey <- data.frame(
resp_id = 1:5,
q1a = c(0, 1, 0, 1, 0),
q1b = c(NA, NA, NA, 1, 0), # Asked if q1a %in% 1
q2a = c(90, 80, 60, 40, 90),
q2b = c("", "", NA, "Some reason for low rating", "") # Asked if q2a < 50
)
# Check that q1b has a value if and only if q1a %in% 1
try(expect_base(q1b, q1a %in% 1, data = my_survey)) # Fails for resp_id 2 and 5
#> Error : `my_survey` has a base mismatch in variable `q1b`.
#> 1 cases have `q1a %in% 1` but `q1b` is missing.
#> 1 cases do not have `q1a %in% 1` but `q1b` is non missing.
# Check that q2b has a value if and only if q2a < 50
expect_base(q2b, q2a < 50, data = my_survey)
# Check that if q1a %in% 0 then q2a > 50 (but not vice-versa)
expect_cond(q1a %in% 0, q2a > 50, data = my_survey)