Nothing
test_that("ggtibble", {
# Test length 1
v1 <- ggtibble(data.frame(A = 1, B = 2))
expect_named(v1, expected = c("data_plot", "figure", "caption"))
expect_length(v1$figure, 1)
expect_equal(v1$data_plot[[1]], tibble::tibble(A = 1, B = 2))
expect_equal(v1$caption, "")
# Test length >1
v2 <- ggtibble(data.frame(A = 1:2, B = 3:4), outercols = "A")
expect_named(v2, expected = c("A", "data_plot", "figure", "caption"))
expect_length(v2$figure, 2)
expect_equal(
v2$data_plot,
list(
tibble::tibble(B = 3),
tibble::tibble(B = 4)
)
)
expect_equal(v2$caption, rep("", 2))
# Test captioning
v3 <- ggtibble(data.frame(A = 1:2, B = 3:4), outercols = "A", caption = "A is {A}")
expect_named(v3, expected = c("A", "data_plot", "figure", "caption"))
expect_length(v3$figure, 2)
expect_equal(
v3$data_plot,
list(
tibble::tibble(B = 3),
tibble::tibble(B = 4)
)
)
expect_equal(v3$caption, paste("A is", 1:2))
# Test labels
v4 <- ggtibble(data.frame(A = 1:2, B = 3:4), outercols = "A", labs = list(x = "A is {A}"))
expect_named(v4, expected = c("A", "data_plot", "figure", "caption"))
expect_length(v4$figure, 2)
expect_equal(
v4$data_plot,
list(
tibble::tibble(B = 3),
tibble::tibble(B = 4)
)
)
expect_named(v4$figure[[1]]$labels, "x")
expect_equal(
v4$figure[[1]]$labels$x,
"A is 1"
)
expect_equal(
v4$figure[[2]]$labels$x,
"A is 2"
)
expect_equal(v4$caption, rep("", 2))
# Test math
expect_error(
v4 - ggplot2::geom_point(),
regexp = "- is not defined for ggtibble objects",
fixed = TRUE
)
expect_error(
+v4,
regexp = "Unary operations are not defined for ggtibble objects",
fixed = TRUE
)
v5 <-
ggtibble(
data.frame(A = 1:2, B = 3:4),
ggplot2::aes(x = B, y = B),
outercols = "A",
labs = list(x = "A is {A}")
) +
ggplot2::geom_point()
expect_equal(nrow(v5), 2)
expect_equal(v4$figure[[1]]$layers, list())
expect_s3_class(v5$figure[[1]]$layers[[1]]$geom, "GeomPoint")
# NULL labels work (#6)
v6 <-
ggtibble(
data.frame(A = 1:2, B = 3:4),
ggplot2::aes(x = B, y = B),
outercols = "A",
labs = list(x = "A is {A}", y = NULL)
) +
ggplot2::geom_point()
expect_equal(
v6$figure[[1]]$labels$x,
"A is 1"
)
expect_equal(
v6$figure[[1]]$labels$y,
character(0)
)
})
test_that("knit_print.ggtibble", {
d_plot <-
data.frame(
A = rep(c("foo", "bar"), each = 4),
B = 1:8,
C = 11:18,
Bunit = "mg",
Cunit = "km"
)
all_plots <-
ggtibble(
d_plot,
ggplot2::aes(x = B, y = C),
outercols = c("A", "Bunit", "Cunit"),
caption = "All the {A}",
labs = list(x = "B ({Bunit})", y = "C ({Cunit})")
) +
ggplot2::geom_point() +
ggplot2::geom_line()
expect_error(
knit_print(all_plots, filename = file.path(tempdir(), "foo.png")),
regexp = "`filename` must be NULL, the same length as `x`, or an sprintf format"
)
# Write manually-named files
output_file <- file.path(tempdir(), paste0("test_knit_print_", c("a", "b"), ".png"))
# Ensure that the files do not exist before the test
found_files <- list.files(path = tempdir(), pattern = "^test_knit_print_[ab]\\.png$", full.names = TRUE)
expect_length(found_files, 0)
# Write the output, find the files, ensure that the files are remvoed after
# testing, and test that they exist
knit_print(all_plots, filename = output_file)
found_files <- list.files(path = tempdir(), pattern = "^test_knit_print_[ab]\\.png$", full.names = TRUE)
withr::defer(unlink(found_files))
expect_equal(file.exists(found_files), rep(TRUE, 2))
# Write files with a pattern
output_file <- file.path(tempdir(), "test_knit_print_%d.png")
# Ensure that the files do not exist before the test
found_files <- list.files(path = tempdir(), pattern = "^test_knit_print_[0-9]+\\.png$", full.names = TRUE)
expect_length(found_files, 0)
# Write the output, find the files, ensure that the files are remvoed after
# testing, and test that they exist
knit_print(all_plots, filename = output_file)
found_files <- list.files(path = tempdir(), pattern = "^test_knit_print_[0-9]+\\.png$", full.names = TRUE)
withr::defer(unlink(found_files))
expect_equal(file.exists(found_files), rep(TRUE, 2))
withr::deferred_clear()
})
test_that("labels are not always the same (#3)", {
d_plot <-
data.frame(
A = c("A", "B"),
B = c("C", "D"),
x = 1,
y = 1
)
p <-
ggtibble(d_plot, ggplot2::aes(x = x, y = y), outercols = c("A", "B"), labs = list(x = "{A} {B}")) +
ggplot2::geom_point()
fig1 <- p$figure[[1]]
fig2 <- p$figure[[2]]
expect_true(fig1$labels$x != fig2$labels$x)
})
test_that("new_ggtibble() works", {
expect_s3_class(
new_ggtibble(tibble::tibble(figure = list(ggplot2::ggplot()), caption = "")),
"ggtibble"
)
})
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.