assert {testit}R Documentation

Assertions with a message

Description

This function was built from stopifnot(). It emits a message in case of errors, which can be a helpful hint for diagnosing the errors (stopifnot() only prints the possibly truncated source code of the expressions).

Usage

assert(fact, ...)

Arguments

fact

a message for the assertions when any of them fails; treated the same way as expressions in ... if it is not a character string, which means you do not have to provide a message to this function

...

any number of R expressions, presumably to return vectors of TRUE's (if FALSE is returned anywhere, an error will show up)

Value

Invisible NULL if all expressions returned TRUE, otherwise an error is signalled and the user-provided message is emitted.

Note

The internal implementation of stopifnot() is different with the function in R base: (1) the custom message fact is emitted if an error occurs (2) assert() requires the logical values to be non-empty (3) if ... contains a compound expression in {} which returns FALSE (e.g., if (TRUE) {1+1; FALSE}), the first and the last but one line of the source code from deparse() are printed in the error message, otherwise the first line is printed

Examples

assert("one equals one", 1 == 1)
assert("seq and : produce equal sequences", seq(1L, 10L) == 1L:10L)
assert("seq and : produce identical sequences", identical(seq(1L, 10L), 1L:10L))

# multile tests
T = FALSE
F = TRUE
assert("T is bad for TRUE, and so is F for FALSE", T != TRUE, F != FALSE)

# a mixture of tests
assert("Let's pray all of them will pass", 1 == 1, 1 != 2, letters[4] == "d", 
    rev(rev(letters)) == letters)

# logical(0) cannot pass assert(), although stopifnot() does not care
try(assert("logical(0) cannot pass", 1 == integer(0)))
stopifnot(1 == integer(0))  # it's OK!

# a compound expression
try(assert("this if statement returns TRUE", if (TRUE) {
    x = 1
    x == 2
}))

# no message
assert(!FALSE, TRUE, is.na(NA))

[Package testit version 0.4 Index]