context("cnd")
test_that("cnd() constructs all fields", {
cond <- cnd("cnd_class", message = "cnd message")
expect_identical(conditionMessage(cond), "cnd message")
expect_is(cond, "cnd_class")
})
test_that("cnd() throws with unnamed fields", {
expect_error(cnd("class", "msg", 10), "must have named data fields")
})
test_that("restarts are established", {
with_restarts(foo = function() {}, expect_true(rst_exists("foo")))
})
test_that("restarting() handlers pass along all requested arguments", {
signal_foo <- function() {
signal("", "foo", foo_field = "foo_field")
}
fn <- function() {
with_handlers(signal_foo(), foo = restart_handler)
}
restart_handler <- restarting("rst_foo",
a = "a",
splice(list(b = "b")),
.fields = c(field_arg = "foo_field")
)
rst_foo <- function(a, b, field_arg) {
expect_equal(list(a, b, field_arg), list("a", "b", "foo_field"))
}
with_restarts(fn(), rst_foo = rst_foo)
})
test_that("cnd_type() detects condition type", {
expect_error(cnd_type(list()), "not a condition object")
expect_error(cnd_type(mtcars), "not a condition object")
expect_error(cnd_type(env()), "not a condition object")
expect_identical(cnd_type(cnd("foo")), "condition")
expect_identical(cnd_type(message_cnd()), "message")
expect_identical(cnd_type(warning_cnd()), "warning")
expect_identical(cnd_type(error_cnd()), "error")
expect_identical(cnd_type(catch_cnd(interrupt())), "interrupt")
})
test_that("bare conditions must be subclassed", {
expect_error(cnd(), "must be subclassed")
expect_error(signal(""), "must be subclassed")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.