Nothing
test_that("ggsave creates file", {
path <- tempfile()
on.exit(unlink(path))
p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
expect_false(file.exists(path))
ggsave(path, p, device = "pdf", width = 5, height = 5)
expect_true(file.exists(path))
})
test_that("ggsave can create directories", {
dir <- tempdir()
path <- file.path(dir, "foobar", "tmp.pdf")
on.exit(unlink(path))
p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
expect_error(ggsave(path, p))
expect_false(dir.exists(dirname(path)))
# 2 messages: 1 for saving and 1 informing about directory creation
expect_message(expect_message(ggsave(path, p, create.dir = TRUE)))
expect_true(dir.exists(dirname(path)))
})
test_that("ggsave restores previous graphics device", {
# When multiple devices are open, dev.off() restores the next one in the list,
# not the previously-active one. (#2363)
path <- tempfile()
on.exit(unlink(path))
png(tempfile())
png(tempfile())
on.exit(graphics.off(), add = TRUE)
old_dev <- dev.cur()
p <- ggplot(mpg, aes(displ, hwy)) + geom_point()
ggsave(path, p, device = "png", width = 5, height = 5)
expect_identical(old_dev, dev.cur())
})
test_that("ggsave uses theme background as image background", {
skip_if_not_installed("svglite")
skip_if_not_installed("xml2")
path <- tempfile()
on.exit(unlink(path))
p <- ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
coord_fixed() +
theme(plot.background = element_rect(fill = "#00CCCC"))
ggsave(path, p, device = "svg", width = 5, height = 5)
img <- xml2::read_xml(path)
# Find background rect in svg
bg <- as.character(xml2::xml_find_first(img, xpath = "d1:rect/@style"))
expect_true(grepl("fill: #00CCCC", bg))
})
test_that("ggsave can handle blank background", {
skip_if_not_installed("svglite")
skip_if_not_installed("xml2")
path <- tempfile()
on.exit(unlink(path))
p <- ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
theme(plot.background = element_blank())
ggsave(path, p, device = "svg", width = 5, height = 5)
img <- xml2::read_xml(path)
bg <- as.character(xml2::xml_find_first(img, xpath = "d1:rect/@style"))
expect_true(grepl("fill: none", bg))
})
test_that("ggsave warns about empty or multiple filenames", {
plot <- ggplot(mtcars, aes(disp, mpg)) + geom_point()
withr::with_tempfile(c("file1", "file2"), fileext = ".png", {
expect_warning(
suppressMessages(ggsave(c(file1, file2), plot)),
"`filename` must have length 1"
)
})
expect_error(
ggsave(character(), plot),
"`filename` must be a single string"
)
})
test_that("ggsave fails informatively for no-extension filenames", {
plot <- ggplot(mtcars, aes(disp, mpg)) + geom_point()
expect_error(
ggsave(tempfile(), plot),
"Can't save to"
)
})
# plot_dim ---------------------------------------------------------------
test_that("guesses and informs if dim not specified", {
png(width = 10, height = 10, units = "in", res = 300)
on.exit(capture.output(dev.off()))
expect_message(out <- plot_dim(), "10 x 10")
expect_equal(out, c(10, 10))
})
test_that("uses 7x7 if no graphics device open", {
suppressMessages(expect_equal(plot_dim(), c(7, 7)))
})
test_that("warned about large plot unless limitsize = FALSE", {
expect_error(plot_dim(c(50, 50)), "exceed 50 inches")
expect_equal(plot_dim(c(50, 50), limitsize = FALSE), c(50, 50))
expect_error(plot_dim(c(15000, 15000), units = "px"), "in pixels).")
})
test_that("scale multiplies height & width", {
expect_equal(plot_dim(c(10, 10), scale = 1), c(10, 10))
expect_equal(plot_dim(c(5, 5), scale = 2), c(10, 10))
})
# plot_dev ---------------------------------------------------------------------
test_that("unknown device triggers error", {
expect_snapshot_error(plot_dev(1))
expect_error(plot_dev("xyz"), "Unknown graphics device")
expect_error(plot_dev(NULL, "test.xyz"), "Unknown graphics device")
})
test_that("text converted to function", {
expect_identical(body(plot_dev("png"))[[1]], quote(png_dev))
expect_identical(body(plot_dev("pdf"))[[1]], quote(grDevices::pdf))
})
test_that("if device is NULL, guess from extension", {
expect_identical(body(plot_dev(NULL, "test.png"))[[1]], quote(png_dev))
})
# parse_dpi ---------------------------------------------------------------
test_that("DPI string values are parsed correctly", {
expect_type(parse_dpi("print"), "double")
expect_type(parse_dpi("screen"), "double")
expect_type(parse_dpi("retina"), "double")
expect_type(parse_dpi(100), "double")
expect_type(parse_dpi(300L), "integer")
})
test_that("invalid single-string DPI values throw an error", {
expect_snapshot_error(parse_dpi("abc"))
})
test_that("invalid non-single-string DPI values throw an error", {
expect_snapshot_error(parse_dpi(factor(100)))
expect_snapshot_error(parse_dpi(c("print", "screen")))
expect_snapshot_error(parse_dpi(c(150, 300)))
expect_snapshot_error(parse_dpi(list(150)))
})
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.