These are the primitives that you can use to implement your own expectations.
Every path through an expectation should either call pass(), fail(),
or throw an error (e.g. if the arguments are invalid). Expectations should
always return invisible(act$val).
Learn more about creating your own expectations in
vignette("custom-expectation").
Usage
fail(
message = "Failure has been forced",
info = NULL,
srcref = NULL,
trace_env = caller_env(),
trace = NULL
)
pass()Arguments
- message
A character vector describing the failure. The first element should describe the expected value, and the second (and optionally subsequence) elements should describe what was actually seen.
- info
Character vector continuing additional information. Included for backward compatibility only and new expectations should not use it.
- srcref
Location of the failure. Should only needed to be explicitly supplied when you need to forward a srcref captured elsewhere.
- trace_env
If
traceis not specified, this is used to generate an informative traceback for failures. You should only need to set this if you're callingfail()from a helper function; seevignette("custom-expectation")for details.- trace
An optional backtrace created by
rlang::trace_back(). When supplied, the expectation is displayed with the backtrace. Expert use only.
Examples
expect_length <- function(object, n) {
act <- quasi_label(rlang::enquo(object), arg = "object")
act_n <- length(act$val)
if (act_n != n) {
fail(sprintf("%s has length %i, not length %i.", act$lab, act_n, n))
} else {
pass()
}
invisible(act$val)
}
