test_that("basics", {
x <- rando(10)
expect_true(vec_is(x))
expect_equal(vec_size(x), 10)
expect_identical(vec_ptype_common(x, x), vec_ptype(x))
})
test_that("casting of rando works", {
x <- as_rando(1:10)
expect_equal(vec_cast(x, rando()), x)
expect_equal(vec_cast(NA, rando()), as_rando(NA))
expect_equal(vec_cast(unspecified(2), rando()), as_rando(c(NA, NA)))
expect_error(vec_cast(x, factor()), class = "vctrs_error_incompatible_type")
expect_error(vec_cast(factor(), x), class = "vctrs_error_incompatible_type")
})
test_that("vec_ptype2 for rando works", {
x <- as_rando(1:10)
expect_equal(vec_ptype(vec_ptype2(x, x)), rando())
expect_equal(vec_ptype2(x, NA), rando())
expect_equal(vec_ptype2(NA, x), rando())
expect_equal(vec_ptype2(unspecified(), x), rando())
expect_equal(vec_ptype2(x, unspecified()), rando())
expect_error(vec_ptype2(x, 1), class = "vctrs_error_incompatible_type")
expect_error(vec_ptype2(1, x), class = "vctrs_error_incompatible_type")
expect_error(vec_ptype2(x, ""), class = "vctrs_error_incompatible_type")
expect_error(vec_ptype2("", x), class = "vctrs_error_incompatible_type")
expect_error(vec_ptype2(data.frame(), x), class = "vctrs_error_incompatible_type")
expect_error(vec_ptype2(x, data.frame()), class = "vctrs_error_incompatible_type")
})
test_that("vec_ptype_abbr.rando", {
expect_equal(vec_ptype_abbr(as_rando(1:10)), "vctrs_rn")
expect_equal(vec_ptype_full(as_rando(1:10)), "vctrs_rando")
})
test_that("proxy and data", {
x <- rando(10)
expect_identical(vec_ptype(vec_proxy(x)), x[0])
expect_identical(vec_data(x), x@.Data)
expect_false(isS4(vec_data(x)))
expect_s4_class(vec_restore(vec_data(x), x), "vctrs_rando")
expect_true(isS4(vec_restore(vec_data(x), x)))
})
test_that("unset_s4() copies and works", {
# Initial condition
x <- rando()
expect_true(isS4(x))
# Unsetting has no side effect on x
unset_s4(x)
expect_true(isS4(x))
# Unsetting actually works
y <- unset_s4(x)
expect_false(isS4(y))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.