Skip to content

Commit 86fbec5

Browse files
committed
add testthat test for my new features
1 parent f6f2105 commit 86fbec5

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/testthat/test-ggplot-coord.R

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
context("Fixed coordinates")
2+
3+
# Expect trace function
4+
expect_traces <- function(gg, n_traces, name) {
5+
stopifnot(is.ggplot(gg))
6+
stopifnot(is.numeric(n.traces))
7+
save_outputs(gg, paste0("coord_fixed-", name))
8+
L <- gg2list(gg)
9+
all_traces <- L$data
10+
no_data <- sapply(all_traces, function(tr) {
11+
is.null(tr[["x"]]) && is.null(tr[["y"]])
12+
})
13+
has_data <- all_traces[!no_data]
14+
expect_equal(length(has_data), n_traces)
15+
list(traces = has_data, layout = L$layout)
16+
}
17+
18+
# Data where x ranges from 0-10, y ranges from 0-30
19+
set.seed(202)
20+
dat <- data.frame(xval = runif(40,0,10), yval = runif(40,0,30))
21+
22+
# Force equal scaling
23+
p <- ggplot(dat, aes(xval, yval)) + geom_point() + coord_fixed()
24+
# Test
25+
test_that("coord_fixed() is translated to the right height-width ratio", {
26+
info <- expect_traces(p, 1, "force_equal_scaling")
27+
tr <- info$traces[[1]]
28+
la <- info$layout
29+
expect_identical(tr$type, "scatter")
30+
# height-width ratio check
31+
built <- ggplot_build2(p)
32+
x_range <- range(built[[2]]$ranges[[1]]$x.major_source, na.rm = TRUE)
33+
y_range <- range(built[[2]]$ranges[[1]]$y.major_source, na.rm = TRUE)
34+
yx_ratio <- (y_range[2] - y_range[1]) / (x_range[2] - x_range[1])
35+
expect_identical(la$height/la$width, yx_ratio * p$coordinates$ratio)
36+
})
37+
38+
# Equal scaling, with each 1 on the x axis the same length as y on x axis
39+
p <- ggplot(dat, aes(xval, yval)) + geom_point() + coord_fixed(1/3)
40+
# Test
41+
test_that("coord_fixed() is translated to the right height-width ratio", {
42+
info <- expect_traces(p, 1, "force_equal_scaling")
43+
tr <- info$traces[[1]]
44+
la <- info$layout
45+
expect_identical(tr$type, "scatter")
46+
# height-width ratio check
47+
built <- ggplot_build2(p)
48+
x_range <- range(built[[2]]$ranges[[1]]$x.major_source, na.rm = TRUE)
49+
y_range <- range(built[[2]]$ranges[[1]]$y.major_source, na.rm = TRUE)
50+
yx_ratio <- (y_range[2] - y_range[1]) / (x_range[2] - x_range[1])
51+
expect_identical(la$height/la$width, yx_ratio * p$coordinates$ratio)
52+
})

0 commit comments

Comments
 (0)