test_predicate_and_assertion <- function(valid_generator,
invalid_generator,
predicate,
assertion) {
test_predicate(
valid_generator = valid_generator,
invalid_generator = invalid_generator,
predicate = predicate
)
test_assertion(
valid_generator = valid_generator,
invalid_generator = invalid_generator,
assertion = assertion
)
}
test_predicate <- function(valid_generator,
invalid_generator,
predicate) {
testthat::test_that(
paste0(
parse_function_name(predicate),
" returns TRUE for valid input and FALSE otherwise"
),
{
for_all_expect_true(valid_generator, predicate)
for_all_expect_false(invalid_generator, predicate)
}
)
}
test_assertion <- function(valid_generator,
invalid_generator,
assertion) {
testthat::test_that(
paste0(
parse_function_name(assertion),
" returns the input for valid input and throws an
error otherwise"
),
{
for_all_expect_identity(valid_generator, assertion)
for_all_expect_error(invalid_generator, assertion)
}
)
}
for_all_expect_true <- function(generator, .f) {
hedgehog::forall(
generator,
function(x) testthat::expect_true(.f(x))
)
}
for_all_expect_false <- function(generator, .f) {
hedgehog::forall(
generator,
function(x) testthat::expect_false(.f(x))
)
}
for_all_expect_identity <- function(generator, .f) {
hedgehog::forall(
generator,
function(x) testthat::expect_identical(x, .f(x))
)
}
for_all_expect_error <- function(generator, .f) {
hedgehog::forall(
generator,
function(x) testthat::expect_error(.f(x))
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.