Nothing
# Parameters --------------------------------------------------------------
test_that("layer() checks its input", {
expect_snapshot_error(layer(stat = "identity", position = "identity"))
expect_snapshot_error(layer(geom = "point", position = "identity"))
expect_snapshot_error(layer(geom = "point", stat = "identity"))
expect_snapshot_error(layer("point", "identity", mapping = 1:4, position = "identity"))
expect_snapshot_error(layer("point", "identity", mapping = ggplot(), position = "identity"))
expect_snapshot_error(check_subclass("test", "geom"))
expect_snapshot_error(check_subclass(environment(), "geom"))
})
test_that("aesthetics go in aes_params", {
l <- geom_point(size = "red")
expect_equal(l$aes_params, list(size = "red"))
})
test_that("unknown params create warning", {
expect_warning(geom_point(blah = "red"), "unknown parameters")
})
test_that("unknown aesthetics create warning", {
expect_warning(geom_point(aes(blah = "red")), "unknown aesthetics")
})
test_that("invalid aesthetics throws errors", {
# We want to test error and ignore the scale search message
suppressMessages({
p <- ggplot(mtcars) + geom_point(aes(disp, mpg, fill = data))
expect_snapshot_error(ggplot_build(p))
p <- ggplot(mtcars) + geom_point(aes(disp, mpg, fill = after_stat(data)))
expect_snapshot_error(ggplot_build(p))
})
})
test_that("unknown NULL aesthetic doesn't create warning (#1909)", {
expect_warning(geom_point(aes(blah = NULL)), NA)
})
test_that("column vectors are allowed (#2609)", {
df <- data_frame(x = 1:10)
df$y <- scale(1:10) # Returns a column vector
p <- ggplot(df, aes(x, y))
expect_s3_class(layer_data(p), "data.frame")
})
test_that("missing aesthetics trigger informative error", {
df <- data_frame(x = 1:10)
expect_error(
ggplot_build(ggplot(df) + geom_line()),
"requires the following missing aesthetics:"
)
expect_error(
ggplot_build(ggplot(df) + geom_col()),
"requires the following missing aesthetics:"
)
})
test_that("function aesthetics are wrapped with after_stat()", {
df <- data_frame(x = 1:10)
suppressMessages(
expect_snapshot_error(
ggplot_build(
ggplot(df, aes(colour = density, fill = density)) + geom_point()
)
)
)
})
test_that("computed stats are in appropriate layer", {
df <- data_frame(x = 1:10)
expect_snapshot_error(
ggplot_build(ggplot(df, aes(colour = after_stat(density), fill = after_stat(density))) + geom_point())
)
})
test_that("if an aes is mapped to a function that returns NULL, it is removed", {
df <- data_frame(x = 1:10)
null <- function(...) NULL
p <- cdata(ggplot(df, aes(x, null())))
expect_identical(names(p[[1]]), c("x", "PANEL", "group"))
})
test_that("layers are stateless except for the computed params", {
df <- data.frame(x = 1:10, y = 1:10)
p <- ggplot(df) +
geom_col(aes(x = x, y = y), width = 0.8, fill = "red")
col_layer <- as.list(p$layers[[1]])
stateless_names <- setdiff(names(col_layer), c("computed_geom_params", "computed_stat_params", "computed_mapping"))
invisible(ggplotGrob(p))
expect_identical(as.list(p$layers[[1]])[stateless_names], col_layer[stateless_names])
})
test_that("inherit.aes works", {
df <- data.frame(x = 1:10, y = 1:10)
p1 <- ggplot(df, aes(y = y)) +
geom_col(aes(x = x), inherit.aes = TRUE)
p2 <- ggplot(df, aes(colour = y)) +
geom_col(aes(x = x, y = y), inherit.aes = FALSE)
invisible(ggplotGrob(p1))
invisible(ggplotGrob(p2))
expect_identical(p1$layers[[1]]$computed_mapping, p2$layers[[1]]$computed_mapping)
})
test_that("retransform works on computed aesthetics in `map_statistic`", {
df <- data.frame(x = rep(c(1,2), c(9, 25)))
p <- ggplot(df, aes(x)) + geom_bar() + scale_y_sqrt()
expect_equal(layer_data(p)$y, c(3, 5))
# To double check: should be original values when `retransform = FALSE`
parent <- p$layers[[1]]$stat
p$layers[[1]]$stat <- ggproto(NULL, parent, retransform = FALSE)
expect_equal(layer_data(p)$y, c(9, 25))
})
test_that("layer reports the error with correct index etc", {
p <- ggplot(mtcars) + geom_linerange(aes(disp, mpg), ymin = 2)
expect_snapshot_error(ggplotGrob(p))
p <- ggplot(
data_frame(x = "one value", y = 3, value = 4:6),
aes(x, ymin = 0, lower = 1, middle = y, upper = value, ymax = 10)
) +
geom_point(aes(x = x, y = y), inherit.aes = FALSE) +
geom_boxplot(stat = "identity")
expect_snapshot_error(ggplotGrob(p))
})
test_that("layer warns for constant aesthetics", {
p <- ggplot(mtcars, aes(x = seq_along(mpg))) + geom_point(aes(y = 2))
expect_silent(ggplot_build(p))
p <- ggplot(mtcars, aes(x = 1)) + geom_point(aes(y = 2))
expect_snapshot_warning(ggplot_build(p))
})
# Data extraction ---------------------------------------------------------
test_that("AsIs data passes unmodified", {
p <- ggplot() + geom_blank(aes(x = 1:2, y = 1:2))
ld <- layer_data(p + geom_point(aes(x = I(0.5), y = I(0.5))), 2)
expect_s3_class(ld$x, "AsIs")
expect_equal(ld$y, I(0.5))
ld <- layer_data(p + geom_point(x = I(0.5), y = I(0.5), data = mtcars), 2)
expect_s3_class(ld$x, "AsIs")
expect_equal(ld$y[1], I(0.5))
ld <- layer_data(p + annotate("point", x = I(0.5), y = I(0.5)), 2)
expect_s3_class(ld$x, "AsIs")
expect_equal(ld$y, I(0.5))
})
test_that("layer_data returns a data.frame", {
l <- geom_point()
expect_equal(l$layer_data(mtcars), unrowname(mtcars))
l <- geom_point(data = head(mtcars))
expect_equal(l$layer_data(mtcars), head(unrowname(mtcars)))
l <- geom_point(data = head)
expect_equal(l$layer_data(mtcars), head(unrowname(mtcars)))
l <- geom_point(data = ~ head(., 10))
expect_equal(l$layer_data(mtcars), head(unrowname(mtcars), 10))
l <- geom_point(data = nrow)
expect_snapshot_error(l$layer_data(mtcars))
})
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.