The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Simple assertions with sensible defaults and customisable error messages.
The goals with assertions are to provide
Convenient assertion calls
(e.g. assert_number()
)
A general assert
function that asserts any possible
condition/s and throws informative error messages
Extremely user friendly error message defaults.
Easily customisable error messages, with inline code evaluation
& styling powered by the cli
package
Simple creation of custom assertion functions with user-specified defaults
install.packages("assertions")
To get a bug fix or to use a feature from the development version, you can install the development version of assertions from GitHub.
# install.packages('remotes')
::install_github('selkamand/assertions') remotes
All assertions start with assert
, which means you just
type it in and levarage autocomplete suggestions to look through all
available options
# Load library
library(assertions)
# Use premade assertions
assert_character(c('a', 'b', 'c'))
assert_number(2)
assert_flag(TRUE)
# Assert anything
assert(1000 % 2 == 0)
# Assert multiple conditions at once (all must be true)
assert(1000 % 2 == 0, 6/2 == 3)
# Customise any error messages using the `msg` argument
assert_number("A", msg = "Please supply a number!")
# Evaluate code in your error message using '{}' operators
= "A"
foo assert_number(foo, msg = "'{foo}' is not a number :(. Try again")
# Emphasise cetain words in error using {.strong text_to_emphasise}
assert_number("A", msg = "{.strong Try again}")
For advanced customisation, see cli documentation
Have a custom assertion you want to use repeatedly?
Creating your own assertion functions is extremely easy
Just use assert_create()
, you just need to supply:
a function that returns TRUE/FALSE when assertion should PASS/FAIL
a default error message
How about an example?
# Create a function that asserts input is lowercase
<- assert_create(
assert_lowercase func = function(x) {x == tolower(x)},
default_error_msg = "'{arg_name}' must be entirely lowercase"
)
#Assertion passes if input is lowercase
assert_lowercase("all lower case")
#But throws the expected error if uppercase characters are present
assert_lowercase("NOT all lower case")
See ?assert_create()
for details
Assertions may have vectorised versions that test whether all elements in a vector/matrix meet a condition.
For example:
assert_greater_than()
expects a single number as an
input
assert_all_greater_than()
works on
vectors/matrices.
Vectorised functions have the assert_all_
prefix.
Two options
Create a custom assert_something
function with a
call to assert_create()
or
assert_create_chain()
Create a github issue with the assertion creation code + any
helper function you pass to the func
argument
(e.g. is_something()
)
Great alternative packages for writing assertions include:
Each package has its own features and syntax. So hopefully there is
one that suits your needs and preferences. I’m a big fan of
checkmate
for its speed, assertive
for its
huge library of ready-made assertion functions, and
assertthat
for its error message customization.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.