Nothing
test_that("expect_type checks typeof", {
expect_success(expect_type(factor("a"), "integer"))
x <- factor("a")
expect_snapshot_failure(expect_type(x, "double"))
})
test_that("expect_type validates its inputs", {
expect_snapshot(error = TRUE, {
expect_type(1, c("integer", "double"))
})
})
test_that("expect_is checks class", {
local_edition(2)
expect_success(expect_is(factor("a"), "factor"))
expect_snapshot_failure(expect_is(factor("a"), "integer"))
})
test_that("expect_s3/s4_class fails if appropriate type", {
A <- methods::setClass("A", contains = "list")
x1 <- 1
x2 <- A()
x3 <- factor("a")
expect_snapshot_failure(expect_s3_class(x1, "double"))
expect_snapshot_failure(expect_s3_class(x2, "double"))
expect_snapshot_failure(expect_s4_class(x3, "double"))
})
test_that("expect_s[34]_class can check not S3/S4", {
expect_success(expect_s3_class(1, NA))
expect_snapshot_failure(expect_s3_class(factor(), NA))
A <- methods::setClass("A", contains = "list")
expect_success(expect_s4_class(1, NA))
expect_snapshot_failure(expect_s4_class(A(), NA))
})
test_that("test_s4_class respects class hierarchy", {
A <- methods::setClass("A", contains = "list")
B <- methods::setClass("B", contains = "list")
C <- methods::setClass("C", contains = c("A", "B"))
withr::defer({
methods::removeClass("A")
methods::removeClass("B")
methods::removeClass("C")
})
expect_success(expect_s4_class(C(), "A"))
expect_success(expect_s4_class(C(), "B"))
expect_snapshot_failure(expect_s4_class(C(), "D"))
})
test_that("expect_s3_class validates its inputs", {
expect_snapshot(error = TRUE, {
expect_s3_class(factor("a"), 1)
expect_s3_class(factor("a"), "factor", exact = "yes")
})
})
test_that("test_s3_class respects class hierarchy", {
x <- structure(list(), class = c("a", "b"))
expect_success(expect_s3_class(x, "a"))
expect_success(expect_s3_class(x, "b"))
expect_snapshot_failure(expect_s3_class(x, "c"))
expect_snapshot_failure(expect_s3_class(x, c("c", "d")))
})
test_that("test_s3_class can request exact match", {
x <- structure(list(), class = c("a", "b"))
expect_snapshot_failure(expect_s3_class(x, "a", exact = TRUE))
expect_success(expect_s3_class(x, c("a", "b"), exact = TRUE))
})
test_that("expect_s3_class allows unquoting of first argument", {
f <- factor("a")
expect_success(expect_s3_class(!!rlang::quo(f), "factor"))
})
test_that("expect_s4_class allows unquoting of first argument", {
cls <- methods::setClass("new_class", slots = c("a" = "numeric"))
obj <- methods::new("new_class", a = 3)
expect_success(expect_s4_class(!!rlang::quo(obj), "new_class"))
})
test_that("expect_s4_class validates its inputs", {
expect_snapshot(error = TRUE, {
expect_s4_class(factor("a"), 1)
})
})
# expect_r6_class --------------------------------------------------------
test_that("expect_r6_class succeeds when object inherits from expected class", {
Person <- R6::R6Class("Person")
Student <- R6::R6Class("Student", inherit = Person)
person <- Person$new()
student <- Student$new()
expect_success(expect_r6_class(person, "Person"))
expect_success(expect_r6_class(student, "Student"))
expect_success(expect_r6_class(student, "Person"))
})
test_that("expect_r6_class generates useful failures", {
x <- 1
person <- R6::R6Class("Person")$new()
expect_snapshot_failure({
expect_r6_class(x, "Student")
expect_r6_class(person, "Student")
})
})
test_that("expect_r6_class validates its inputs", {
expect_snapshot(error = TRUE, {
expect_r6_class(1, c("Person", "Student"))
})
})
# expect_s7_class --------------------------------------------------------
test_that("can check with actual class", {
Foo <- S7::new_class("Foo", package = NULL)
Bar <- S7::new_class("Bar", package = NULL)
expect_success(expect_s7_class(Foo(), class = Foo))
expect_snapshot_failure(expect_s7_class(Foo(), class = Bar))
Baz <- S7::new_class("Baz", parent = Foo, package = NULL)
expect_snapshot_failure(expect_s7_class(Baz(), class = Bar))
})
test_that("informative failure if not S7", {
Foo <- S7::new_class("Foo", package = NULL)
x <- factor()
expect_snapshot_failure(expect_s7_class(x, Foo))
})
test_that("expect_s7_class validates its inputs", {
skip_if_not_installed("S7")
expect_snapshot(expect_s7_class(1, 1), error = TRUE)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.