context("Testing mapdf functions")
tib <- tibble(
a = c(1, 2),
b = list(log10, sqrt),
c = c("parrot", "quest"),
d = list(c(1,2,3), c("a", "b", "c")),
e = c(TRUE, FALSE),
.object_class = list(c("myobject", "list"), c("yourobject", "list"))
)
test_that("Testing whether mapdf works", {
expect_equal(mapdf(tib, class), tib$.object_class)
expect_equal(mapdf(tib, function(row) class(row)), tib$.object_class)
expect_equal(mapdf(tib, ~class(.)), tib$.object_class)
})
test_that("Testing whether mapdf_lgl works", {
expect_equal(mapdf_lgl(tib, is.list), c(TRUE, TRUE))
expect_equal(mapdf_lgl(tib, function(row) row$a > 1), tib$a > 1)
expect_equal(mapdf_lgl(tib, ~.$e), tib$e)
})
test_that("Testing whether mapdf_chr works", {
expect_equal(mapdf_chr(tib, paste, collapse = ""), c("1.Primitive(\"log10\")parrotc(1, 2, 3)TRUE", "2.Primitive(\"sqrt\")questc(\"a\", \"b\", \"c\")FALSE"))
expect_equal(mapdf_chr(tib, function(row) paste0("~", row$e, "~")), paste0("~", tib$e, "~"))
expect_equal(mapdf_chr(tib, ~.$c), tib$c)
})
test_that("Testing whether mapdf_int works", {
expect_equal(mapdf_int(tib, length), c(5L, 5L))
expect_equal(mapdf_int(tib, function(row) as.integer(row$a * 10L)), as.integer(tib$a * 10))
expect_equal(mapdf_int(tib, ~nchar(.$c)), c(6, 5))
})
test_that("Testing whether mapdf_dbl works", {
expect_equal(mapdf_dbl(tib, function(row) row$b(row$a)), c(log10(1), sqrt(2)))
expect_equal(mapdf_dbl(tib, ~.$a * 1.5), c(1.5, 3.0))
})
test_that("Testing whether mapdf_dfr works", {
out <- mapdf_dfr(tib, function(row) {
tibble(a = 1, b = row$e, c = row$a)
})
expect_equal(out, tibble(a = c(1, 1), b = c(TRUE, FALSE), c = c(1, 2)))
})
test_that("Testing whether mapdf_lat works", {
out <- mapdf_lat(tib, function(row) {
list(a = 1, b = row$e, c = row$a, d = list(row$c, row$a)) %>% add_class("test")
})
expected_out <- tibble(
a = c(1, 1),
b = c(TRUE, FALSE),
c = c(1, 2),
d = list(list("parrot", 1), list("quest", 2)),
.object_class = list(c("test", "list"), c("test", "list"))
)
expect_equal(colnames(out), colnames(expected_out))
walk(colnames(out), ~ expect_equal(out[[.]], expected_out[[.]]))
})
test_that("Testing whether mapdf_dfc works", {
out <- mapdf_dfc(tib, function(row) {
o <- tibble(row$d)
colnames(o) <- row$c
o
})
expect_equal(out, tibble(parrot = c(1,2,3), quest = c("a", "b", "c")))
})
test_that("Testing whether walkdf works", {
expect_message(walkdf(tib[1, ], ~ message(.$c)), "parrot")
expect_error(walkdf(tib[2, ], ~ stop(.$c)), "quest")
expect_error(walkdf(tib, ~ length(.)), NA)
})
test_that("Testing whether mapdf_fun works", {
mapdf_int2 <- mapdf_fun(purrr::map_int)
expect_equal(mapdf_int2(tib, length), c(5L, 5L))
expect_equal(mapdf_int2(tib, function(row) as.integer(row$a * 10L)), as.integer(tib$a * 10))
expect_equal(mapdf_int2(tib, ~nchar(.$c)), c(6, 5))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.