1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/engine.R
\name{assert_engine}
\alias{assert_engine}
\title{Throws an error if a condition isn't met}
\usage{
assert_engine(
predicate,
...,
msg = "The assertion failed.",
what = c("all", "any"),
na_ignore = FALSE,
severity = c("stop", "warning", "message", "none")
)
}
\arguments{
\item{predicate}{Function that returns a logical value (possibly
a vector).}
\item{...}{Passed to the \code{predicate} function.}
\item{msg}{The error message, in the event of failure.}
\item{what}{Either 'all' or 'any', to reduce vectorised tests to a
single value.}
\item{na_ignore}{A logical value. If \code{FALSE}, \code{NA} values
cause an error; otherwise they do not. Like \code{na.rm} in many
stats package functions, except that the position of the failing
values does not change.}
\item{severity}{How severe should the consequences of the assertion be?
Either \code{"stop"}, \code{"warning"}, \code{"message"}, or \code{"none"}.}
}
\value{
\code{FALSE} with the attribute \code{message}, as provided
in the input.
}
\description{
The workhorse of the package that creates an assertion from a predicate.
If a condition isn't met, then an error is thrown. This function is exported
for use by package developers so that they can create their own assert
functions.
}
\note{
Missing values are considered as \code{FALSE} for the purposes of
whether or not an error is thrown.
}
\examples{
# Basic usage is like do.call; pass a predicate and the arguments to it.
dont_stop(assert_engine(is_true, c(TRUE, FALSE, NA)))
# Customise the error message
dont_stop(
assert_engine(is_true, c(TRUE, FALSE, NA), msg = "Not everything is true")
)
# Only fail when no values match the predicate's conditions
dont_stop(assert_engine(is_true, logical(3), what = "any"))
# You can use base predicates, but the error message isn't as informative
dont_stop(assert_engine(is.matrix, 1:5))
# Reduce the severity of failure
assert_engine(is_true, c(TRUE, FALSE, NA), severity = "message")
}
|