data(tips)
test_that("stops", {
expect_error(ggmatrix(plots = matrix(), nrow = 2, ncol = 3), "'plots' must be a list()")
expect_error(ggmatrix(plots = list(), nrow = "2", ncol = 3), "'nrow' must be a numeric value")
expect_error(ggmatrix(plots = list(), nrow = 2, ncol = "3"), "'ncol' must be a numeric value")
expect_error(
ggmatrix(plots = list(), nrow = c(2, 3), ncol = 3),
"'nrow' must be a single numeric value"
)
expect_error(
ggmatrix(plots = list(), nrow = 2, ncol = c(2, 3)),
"'ncol' must be a single numeric value"
)
})
test_that("expression labels", {
chars <- c("col1", "col2")
exprs <- c("alpha[0]", "gamma[x + y ^ z]")
p <- ggpairs(tips, 1:2, columnLabels = exprs, labeller = "label_parsed")
vdiffr::expect_doppelganger("expression-labels", p)
expect_error(print(ggpairs(tips, 1:2, columnLabels = expression(alpha, beta))), "xAxisLabels")
})
test_that("byrow", {
plotList <- list()
for (i in 1:6) {
p <- ggally_text(paste("Plot #", i, sep = ""))
p$ggally_check_val <- i
plotList[[i]] <- p
}
a <- ggmatrix(
plotList,
2, 3,
c("A", "B", "C"),
c("D", "E"),
byrow = TRUE
)
k <- 1
for (i in 1:2) {
for (j in 1:3) {
expect_equal(a[i, j]$ggally_check_val, k)
k <- k + 1
}
}
a <- ggmatrix(
plotList,
2, 3,
c("A", "B", "C"),
c("D", "E"),
byrow = FALSE
)
k <- 1
for (j in 1:3) {
for (i in 1:2) {
expect_equal(a[i, j]$ggally_check_val, k)
k <- k + 1
}
}
a
})
test_that("missing plot", {
plotList <- list()
for (i in c(1, 3, 5)) {
p <- ggally_text(paste("Plot #", i, sep = ""))
p$ggally_check_val <- i
plotList[[i]] <- p
}
a <- ggmatrix(
plotList,
2, 3,
c("A", "B", "C"),
c("D", "E"),
byrow = TRUE
)
# reaches code where there are more cells than plots
vdiffr::expect_doppelganger("not-enough-plots", a)
expect_equal(a[1, 1]$ggally_check_val, 1)
expect_equal(a[1, 3]$ggally_check_val, 3)
expect_equal(a[2, 2]$ggally_check_val, 5)
})
test_that("str.ggmatrix", {
pm <- ggpairs(tips, 1:3, upper = "blank")
pm[1, 1] <- pm[1, 1]
txt <- capture.output({
str(pm)
})
expect_true(any(str_detect(txt, "Custom str.ggmatrix output:")))
txt <- capture.output({
str(pm, raw = TRUE)
})
expect_false(any(str_detect(txt, "Custom str.ggmatrix output:")))
})
test_that("blank", {
pm <- ggpairs(tips, 1:2)
pm[1, 2] <- "blank"
vdiffr::expect_doppelganger("blank-1_2", pm)
pm[2, 1] <- NULL
vdiffr::expect_doppelganger("blank-1_2-2_1", pm)
expect_equal(length(pm$plots), 4)
expect_error({
pm[2, 2] <- "not blank"
}, "character values \\(besides 'blank'\\)") # nolint
})
test_that("proportions", {
pm <- ggpairs(iris, 1:2, mapping = ggplot2::aes(color = Species))
pm[2, 2] <- pm[2, 2] + ggplot2::coord_flip()
pm2 <- ggmatrix(
data = iris,
pm$plots,
ncol = 2,
nrow = 2,
xProportions = c(2, 1),
yProportions = c(1, 2),
title = "big plot, small marginals"
)
vdiffr::expect_doppelganger("proportions", pm2)
# turn on progress for a quick plot
# TODO - turn test back on when it uses message properly
# testthat::expect_message(print(pm2, progress = TRUE))
})
test_that("ggmatrix_gtable progress", {
pm <- ggpairs(iris, 1:2)
expect_silent({
pg <- ggmatrix_gtable(pm)
})
expect_warning({
ggmatrix_gtable(pm, progress = TRUE)
})
expect_warning({
ggmatrix_gtable(pm, progress_format = "asdfasdf :plot_i")
})
})
#
# printShowStrips <- c(TRUE, FALSE)
# if (i <= length(printShowStrips)) {
# printShowStrip <- printShowStrips[i]
# } else {
# printShowStrip <- NULL
# }
#
test_that("ggmatrix proportions", {
expect_error({
ggmatrix_proportions("not auto", tips, 1:ncol(tips))
}, "need to be non-NA")
expect_error({
ggmatrix_proportions(NA, tips, 1:ncol(tips))
}, "need to be non-NA")
expect_error({
ggmatrix_proportions(c(1, NA, 1, 1, 1, 1, 1), tips, 1:ncol(tips))
}, "need to be non-NA")
expect_equal(
ggmatrix_proportions("auto", tips, 1:ncol(tips)),
c(2.5, 2.5, 2, 2, 4, 2, 2.5)
)
expect_equal(
ggmatrix_proportions(1, tips, 1:ncol(tips)),
c(1, 1, 1, 1, 1, 1, 1)
)
expect_equal(
ggmatrix_proportions(NULL, tips, 1:ncol(tips)),
NULL
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.