context("Testing tibble helpers")
li <- list(
list(a = 1, b = log10, c = "parrot", d = c(1L, 2L, 3L)) %>% add_class("myobject"),
list(a = 2, b = sqrt, c = "quest", d = c("a", "b", "c")) %>% add_class("yourobject"),
list(a = 4, b = exp, c = "vlissingen", d = c(pi, 2.1, 2.1e-10)) %>% add_class("theirobject")
)
tib <- tibble(
a = c(1, 2, 4),
b = list(log10, sqrt, exp),
c = c("parrot", "quest", "vlissingen"),
d = list(c(1L, 2L, 3L), c("a", "b", "c"), c(pi, 2.1, 2.1e-10)),
.object_class = list(c("myobject", "list"), c("yourobject", "list"), c("theirobject", "list"))
)
test_that("list_as_tibble works", {
tib2 <- list_as_tibble(li)
expect_equal(tib, tib2)
})
test_that("tibble_as_list works", {
li2 <- tibble_as_list(tib)
expect_equal(li2, li)
})
test_that("extract_row_to_list works with integers", {
for (i in seq_len(nrow(tib))) {
expect_equal(extract_row_to_list(tib, i), li[[i]])
}
expect_equal(extract_row_to_list(tib, n()), li[[length(li)]])
for (i in seq_len(nrow(tib))) {
expect_equal(extract_row_to_list(tib, setdiff(-seq_len(n()), -i)), li[[i]])
}
for (i in seq_len(nrow(tib))) {
expect_equal(extract_row_to_list(tib, which(a == tib$a[[i]])), li[[i]])
}
})
test_that("extract_row_to_list fails gracefully", {
expect_null(extract_row_to_list(NULL, 1))
expect_error(extract_row_to_list(tib, 1:2), "Multiple rows were matched")
expect_error(extract_row_to_list(tib, integer(0)), "No rows were matched")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.