Nothing
library(testthat)
# Find location of a grob
gtable_find <- function(x, grob) {
pos <- vapply(x$grobs, identical, logical(1), grob)
x$layout[pos, ]
}
loc_df <- function(t, l, b, r) {
data.frame(t, l, b, r,
z = 1, clip = "on", name = "layout",
stringsAsFactors = FALSE
)
}
test_that("Number of rows grows with add_rows", {
layout <- gtable()
expect_equal(nrow(layout), 0)
layout <- gtable_add_rows(layout, unit(1, "cm"))
expect_equal(nrow(layout), 1)
layout <- gtable_add_rows(layout, unit(1, "cm"))
layout <- gtable_add_rows(layout, unit(1, "cm"))
expect_equal(nrow(layout), 3)
layout <- gtable_add_rows(layout, unit(1:2, "cm"))
expect_equal(nrow(layout), 5)
})
test_that("Number of columns grows with add_cols", {
layout <- gtable()
expect_equal(ncol(layout), 0)
layout <- gtable_add_cols(layout, unit(1, "cm"))
expect_equal(ncol(layout), 1)
layout <- gtable_add_cols(layout, unit(c(1, 1), "cm"))
expect_equal(ncol(layout), 3)
layout <- gtable_add_cols(layout, unit(1:2, "cm"))
expect_equal(ncol(layout), 5)
})
test_that("Setting and getting works", {
layout <- gtable_add_cols(gtable_add_rows(gtable(), cm), cm)
layout <- gtable_add_grob(layout, grob1, 1, 1)
loc <- gtable_find(layout, grob1)
expect_equal(nrow(loc), 1)
expect_equal(loc$t, 1)
expect_equal(loc$r, 1)
expect_equal(loc$b, 1)
expect_equal(loc$l, 1)
})
test_that("Spanning grobs continue to span after row insertion", {
layout <- gtable_add_cols(gtable_add_rows(gtable(), rep(cm, 3)), rep(cm, 3))
layout <- gtable_add_grob(layout, grob1, 1, 1, 3, 3)
within <- gtable_add_rows(gtable_add_cols(layout, cm, pos = 2), cm, pos = 2)
loc <- gtable_find(within, grob1)
expect_equal(loc, loc_df(t = 1, l = 1, b = 4, r = 4))
top_left <- layout
top_left <- gtable_add_cols(top_left, cm, pos = 0)
top_left <- gtable_add_rows(top_left, cm, pos = 0)
loc <- gtable_find(top_left, grob1)
expect_equal(loc, loc_df(t = 2, l = 2, b = 4, r = 4))
bottom_right <- layout
bottom_right <- gtable_add_cols(bottom_right, cm)
bottom_right <- gtable_add_rows(bottom_right, cm)
loc <- gtable_find(bottom_right, grob1)
expect_equal(loc, loc_df(t = 1, l = 1, b = 3, r = 3))
})
test_that("n + 1 new rows/cols after spacing", {
layout <- gtable()
layout <- gtable_add_rows(layout, rep(cm, 3))
layout <- gtable_add_cols(layout, rep(cm, 3))
layout <- gtable_add_col_space(layout, cm)
expect_equal(ncol(layout), 5)
layout <- gtable_add_row_space(layout, cm)
expect_equal(ncol(layout), 5)
})
test_that("Spacing adds rows/cols in correct place", {
layout <- gtable()
layout <- gtable_add_rows(layout, rep(cm, 2))
layout <- gtable_add_cols(layout, rep(cm, 2))
layout <- gtable_add_col_space(layout, null)
layout <- gtable_add_row_space(layout, null)
expect_equal(as.vector(layout$heights), rep(1, 3))
expect_equal(sub('1', '', as.character(layout$heights)), c("cm", "null", "cm"))
expect_equal(as.vector(layout$widths), rep(1, 3))
expect_equal(sub('1', '', as.character(layout$widths)), c("cm", "null", "cm"))
})
test_that("Negative positions place from end", {
layout <- gtable()
layout <- gtable_add_rows(layout, rep(cm, 3))
layout <- gtable_add_cols(layout, rep(cm, 3))
col_span <- gtable_add_grob(layout, grob1, t = 1, l = 1, r = -1)
expect_equal(
gtable_find(col_span, grob1),
loc_df(t = 1, l = 1, b = 1, r = 3)
)
row_span <- gtable_add_grob(layout, grob1, t = 1, l = 1, b = -1)
expect_equal(
gtable_find(row_span, grob1),
loc_df(t = 1, l = 1, b = 3, r = 1)
)
})
test_that("Adding multiple grobs", {
grobs <- rep(list(grob1), 8)
# With z = Inf, and t value for each grob
tval <- c(1, 2, 3, 1, 2, 3, 1, 2)
layout <- gtable_add_cols(gtable_add_rows(gtable(), rep(cm, 3)), rep(cm, 3))
layout <- gtable_add_grob(layout, grobs, tval, 1, 3, 3, z = Inf)
expect_equal(layout$layout$t, tval)
expect_equal(layout$layout$z, 1:8)
# With z = -Inf
layout <- gtable_add_cols(gtable_add_rows(gtable(), rep(cm, 3)), rep(cm, 3))
layout <- gtable_add_grob(layout, grobs, 1, 1, 3, 3, z = -Inf)
expect_equal(layout$layout$z, -7:0)
# Mixing Inf and non-Inf z values
zval <- c(Inf, Inf, 6, 0, -Inf, Inf, -2, -Inf)
layout <- gtable_add_cols(gtable_add_rows(gtable(), rep(cm, 3)), rep(cm, 3))
layout <- gtable_add_grob(layout, grobs, 1, 1, 3, 3, z = zval)
expect_equal(layout$layout$z, c(7, 8, 6, 0, -4, 9, -2, -3))
# Error if inputs are not length 1 or same length as grobs
layout <- gtable_add_cols(gtable_add_rows(gtable(), rep(cm, 3)), rep(cm, 3))
expect_snapshot(gtable_add_grob(layout, grobs, c(1:3), 1, 3, 3), error = TRUE)
expect_snapshot(gtable_add_grob(layout, grobs, tval, 1:2, 3, 3), error = TRUE)
expect_snapshot(gtable_add_grob(layout, grobs, tval, 1, 3, 3, z = 1:4), error = TRUE)
})
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.