library(testthat) test_that("Box spread vertically with center", { box1 <- boxGrob("B1", x = .2, y = .8) box2 <- boxGrob("B2", x = .2, y = .8) box3 <- boxGrob("B3\ntricky", x = .2, y = .8) box4 <- boxGrob("B4", x = .2, y = .8) box5 <- boxGrob("B5", x = .2, y = .8) spread_boxes <- spreadVertical(box1, box2, box3, b = box4, c = box5, .type = "center") sapply(spread_boxes, function(b) coords(b)$x %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% expect_equivalent(.2) sapply(spread_boxes, function(b) coords(b)$y %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% length() %>% expect_equivalent(length(spread_boxes)) convertY(coords(spread_boxes[[1]])$top, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 1, tolerance = 1e-3) convertY(coords(tail(spread_boxes, 1)[[1]])$bottom, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 0, tolerance = 1e-3) expect_equivalent(distance(spread_boxes[1:2], type = "v", center = TRUE), distance(spread_boxes[2:3], type = "v", center = TRUE)) expect_equivalent(distance(spread_boxes[3:4], type = "v", center = TRUE), distance(spread_boxes[4:5], type = "v", center = TRUE)) }) test_that("Box spread vertically with between", { box1 <- boxGrob("B1", x = .2, y = .8) box2 <- boxGrob("B2\nmulti\n\n\nline", x = .2, y = .8) box3 <- boxGrob("B3", x = .2, y = .8) box4 <- boxGrob("B4", x = .2, y = .8) box5 <- boxGrob("B5\ntricky", x = .2, y = .8) spread_boxes <- spreadVertical(box1, box2, box3, b = box4, c = box5, .type = "between") sapply(spread_boxes, function(b) coords(b)$x %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% expect_equivalent(.2) sapply(spread_boxes, function(b) coords(b)$y %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% length() %>% expect_equivalent(length(spread_boxes)) convertY(coords(spread_boxes[[1]])$top, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 1, tolerance = 1e-3) convertY(coords(tail(spread_boxes, 1)[[1]])$bottom, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 0, tolerance = 1e-3) expect_equivalent(distance(spread_boxes[1:2], type = "v"), distance(spread_boxes[2:3], type = "v")) expect_equivalent(distance(spread_boxes[3:4], type = "v"), distance(spread_boxes[4:5], type = "v")) }) test_that("Box spread horizontally with center", { box1 <- boxGrob("B1 some long text", x = .2, y = .8) box2 <- boxGrob("B2", x = .2, y = .8) box3 <- boxGrob("B3", x = .2, y = .8) box4 <- boxGrob("B4", x = .2, y = .8) box5 <- boxGrob("B5", x = .2, y = .8) spread_boxes <- spreadHorizontal(box1, a = box2, box3, b = box4, box5, .type = "center") sapply(spread_boxes, function(b) coords(b)$y %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% expect_equivalent(.8) sapply(spread_boxes, function(b) coords(b)$x %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% length() %>% expect_equivalent(length(spread_boxes)) convertX(coords(spread_boxes[[1]])$left, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 0, tolerance = 1e-3) convertX(coords(tail(spread_boxes, 1)[[1]])$right, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 1, tolerance = 1e-3) expect_equivalent(distance(spread_boxes[1:2], type = "h", center = TRUE), distance(spread_boxes[2:3], type = "h", center = TRUE)) expect_equivalent(distance(spread_boxes[3:4], type = "h", center = TRUE), distance(spread_boxes[4:5], type = "h", center = TRUE)) }) test_that("Box spread horizontally with between", { box1 <- boxGrob("B1 some long text", x = .2, y = .8) box2 <- boxGrob("B2", x = .2, y = .8) box3 <- boxGrob("B3", x = .2, y = .8) box4 <- boxGrob("B4", x = .2, y = .8) box5 <- boxGrob("B5", x = .2, y = .8) spread_boxes <- spreadHorizontal(box1, a = box2, box3, b = box4, box5, .type = "between") sapply(spread_boxes, function(b) coords(b)$y %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% expect_equivalent(.8) sapply(spread_boxes, function(b) coords(b)$x %>% convertX(unitTo = "npc", valueOnly = TRUE)) %>% unique() %>% length() %>% expect_equivalent(length(spread_boxes)) convertX(coords(spread_boxes[[1]])$left, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 0, tolerance = 1e-3) convertX(coords(tail(spread_boxes, 1)[[1]])$right, unitTo = "npc", valueOnly = TRUE) %>% expect_equivalent(expected = 1, tolerance = 1e-3) expect_equivalent(distance(spread_boxes[1:2], type = "h"), distance(spread_boxes[2:3], type = "h")) expect_equivalent(distance(spread_boxes[3:4], type = "h"), distance(spread_boxes[4:5], type = "h")) })