test_that("The geom_textpath() constructor works", {
x <- geom_textpath(stat = "density")
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomTextpath")
expect_s3_class(x$stat, "StatDensity")
})
test_that("The geom_textline() constructor works", {
x <- geom_textline()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomTextline")
expect_s3_class(x$stat, "StatIdentity")
})
test_that("The geom_textdensity() constructor works", {
x <- geom_textdensity()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomTextdensity")
expect_s3_class(x$stat, "StatDensity")
})
test_that("The geom_textsmooth() constructor works", {
x <- geom_textsmooth()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomTextpath")
expect_s3_class(x$stat, "StatSmooth")
})
test_that("The geom_labelline() constructor works", {
x <- geom_labelline()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomLabelpath")
expect_s3_class(x$stat, "StatIdentity")
})
test_that("The geom_labeldensity() constructor works", {
x <- geom_labeldensity()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomLabelpath")
expect_s3_class(x$stat, "StatDensity")
})
test_that("The geom_labelsmooth() constructor works", {
x <- geom_labelsmooth()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomLabelpath")
expect_s3_class(x$stat, "StatSmooth")
})
test_that("The geom_labelcontour() constructor works", {
x <- geom_labelcontour()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomLabelpath")
expect_s3_class(x$stat, "StatTextcontour")
})
test_that("The geom_labeldensity2d() constructor works", {
x <- geom_labeldensity2d()
expect_s3_class(x, "LayerInstance")
expect_s3_class(x$geom, "GeomLabeldensity2d")
expect_s3_class(x$stat, "StatDensity2d")
})
test_that("Text path grob has correct types", {
p <- ggplot(iris, aes(Sepal.Width)) +
geom_textpath(aes(label = Species, group = Species), stat = "density")
grobs <- layer_grob(p)[[1]]
expect_s3_class(grobs, "gTree")
expect_s3_class(grobs, "textpath")
expect_length(grobs$children, 0)
grobs <- makeContent(grobs)
expect_length(grobs$children, 2)
expect_s3_class(grobs$children[[1]], "polyline")
expect_s3_class(grobs$children[[2]], "text")
})
# Rich text ---------------------------------------------------------------
test_that("Text path grob has correct types", {
df <- data_frame(
x = c(1, 2, 1, 2),
y = c(1, 2, 2, 1),
lab = rep(c("red text",
"subtext issuper"), each = 2)
)
p <- ggplot(df, aes(x, y, label = lab)) +
geom_textpath(hjust = 0.25, rich = TRUE)
grobs <- layer_grob(p)[[1]]
expect_s3_class(grobs, "gTree")
expect_s3_class(grobs, "textpath")
expect_length(grobs$children, 0)
expect_equal(
grobs$textpath$label[[c(1, 1)]][-4],
unlist(strsplit("red text", ""))[-4]
)
expect_equal(
grobs$textpath$label[[c(2, 1)]][-8],
unlist(strsplit("subtext issuper", ""))[-8]
)
grobs <- makeContent(grobs)
expect_length(grobs$children, 2)
expect_s3_class(grobs$children[[1]], "polyline")
expect_s3_class(grobs$children[[2]], "text")
expect_equal(
grobs$children[[2]]$gp$col,
rep(c("red", "#000000"), times = c(3, 20))
)
})
test_that("straight richtext is like 'curved' richtext on straight path", {
labels <- c(
"ABC",
"D\nE
F"
)
x <- c(0, 1, 0, 1)
y <- c(0, 1, 1, 0)
id <- c(1, 1, 2, 2)
ctrl <- textpathGrob(x = x, y = y, id = id,
label = labels, rich = TRUE,
default.units = "inch")
case <- textpathGrob(x = x, y = y, id = id,
label = labels, rich = TRUE, straight = TRUE,
default.units = "inch")
ctrl <- makeContent(ctrl)$children[[2]]
case <- makeContent(case)$children[[2]]
expect_equal(ctrl$gp, case$gp)
expect_equal(ctrl$x, case$x, tolerance = 0.05)
expect_equal(ctrl$y, case$y, tolerance = 0.05)
expect_equal(ctrl$label, case$label)
})