| |
| library(grid) |
| |
| unitCheck <- function(u1, u2) { |
| stopifnot(identical(as.character(u1), as.character(u2))) |
| } |
| |
| # Mixture of rep() arguments based on example(rep) examples |
| |
| # simple tests |
| simpleUnit <- unit(1:4, "npc") |
| |
| unitCheck(rep(simpleUnit, 2), |
| unit(rep(1:4, 2), "npc")) |
| unitCheck(rep(simpleUnit, each=2), |
| unit(rep(1:4, each=2), "npc")) |
| unitCheck(rep(simpleUnit, c(2, 1, 2, 1)), |
| unit(rep(1:4, c(2, 1, 2, 1)), "npc")) |
| unitCheck(rep(simpleUnit, each=2, length.out=4), |
| unit(rep(1:4, each=2, length.out=4), "npc")) |
| unitCheck(rep(simpleUnit, each=2, length.out=10), |
| unit(rep(1:4, each=2, length.out=10), "npc")) |
| unitCheck(rep(simpleUnit, each=2, times=3), |
| unit(rep(1:4, each=2, times=3), "npc")) |
| |
| simpleUnitMixed <- unit(1:4, c("npc", "cm")) |
| |
| unitCheck(rep(simpleUnitMixed, 2), |
| unit(rep(1:4, 2), c("npc", "cm"))) |
| unitCheck(rep(simpleUnitMixed, each=2), |
| unit(rep(1:4, each=2), |
| rep(c("npc", "cm"), each=2))) |
| unitCheck(rep(simpleUnitMixed, c(2, 1, 2, 1)), |
| unit(rep(1:4, c(2, 1, 2, 1)), |
| rep(c("npc", "cm"), c(2, 1)))) |
| unitCheck(rep(simpleUnitMixed, each=2, length.out=4), |
| unit(rep(1:4, each=2, length.out=4), |
| rep(c("npc", "cm"), each=2, length.out=4))) |
| unitCheck(rep(simpleUnitMixed, each=2, length.out=10), |
| unit(rep(1:4, each=2, length.out=10), |
| rep(c("npc", "cm"), each=2, length.out=10))) |
| unitCheck(rep(simpleUnitMixed, each=2, times=3), |
| unit(rep(1:4, each=2, times=3), |
| rep(c("npc", "cm"), each=2, times=3))) |
| |
| units <- c("npc", "inch", "strwidth", "cm") |
| dataL <- list(NULL, NULL, "test", NULL) |
| unitWithData <- unit(1:4, units, data=dataL) |
| unitCheck(rep(unitWithData, 2), |
| unit(rep(1:4, 2), |
| rep(units, 2), |
| rep(dataL, 2))) |
| unitCheck(rep(unitWithData, each=2), |
| unit(rep(1:4, each=2), |
| rep(units, each=2), |
| rep(dataL, each=2))) |
| unitCheck(rep(unitWithData, c(2, 1, 2, 1)), |
| unit(rep(1:4, c(2, 1, 2, 1)), |
| rep(units, c(2, 1, 2, 1)), |
| rep(dataL, c(2, 1, 2, 1)))) |
| unitCheck(rep(unitWithData, each=2, length.out=4), |
| unit(rep(1:4, each=2, length.out=4), |
| rep(units, each=2, length.out=4), |
| rep(dataL, each=2, length.out=4))) |
| unitCheck(rep(unitWithData, each=2, length.out=10), |
| unit(rep(1:4, each=2, length.out=10), |
| rep(units, each=2, length.out=10), |
| rep(dataL, each=2, length.out=10))) |
| unitCheck(rep(unitWithData, each=2, times=3), |
| unit(rep(1:4, each=2, times=3), |
| rep(units, each=2, times=3), |
| rep(dataL, each=2, times=3))) |
| |
| # unit.arithmetic |
| unitArith <- unit(1, "npc") + unit(1:2, "inch") |
| |
| unitCheck(rep(unitArith, 2), |
| unit(1, "npc") + unit(rep(1:2, 2), "inch")) |
| unitCheck(rep(unitArith, each=2), |
| unit(1, "npc") + unit(rep(1:2, each=2), "inch")) |
| unitCheck(rep(unitArith, c(2, 1)), |
| unit(1, "npc") + unit(rep(1:2, c(2 ,1)), "inch")) |
| unitCheck(rep(unitArith, each=2, length.out=3), |
| unit(1, "npc") + unit(rep(1:2, each=2, length.out=3), "inch")) |
| unitCheck(rep(unitArith, each=2, length.out=5), |
| unit(1, "npc") + unit(rep(1:2, each=2, length.out=5), "inch")) |
| unitCheck(rep(unitArith, each=2, times=3), |
| unit(1, "npc") + unit(rep(1:2, each=2, times=3), "inch")) |
| |
| # unit.list |
| arg1 <- unit(1, "npc") + unit(1:2, "inch") |
| arg2 <- unit(3, "cm") |
| unitList <- unit.c(arg1, arg2) |
| |
| unitCheck(rep(unitList, 2), |
| unit.c(arg1, arg2, arg1, arg2)) |
| unitCheck(rep(unitList, each=2), |
| unit.c(rep(arg1, each=2), rep(arg2, 2))) |
| unitCheck(rep(unitList, c(2, 1, 2)), |
| unit.c(rep(arg1, c(2, 1)), rep(arg2, 2))) |
| unitCheck(rep(unitList, each=2, length.out=4), |
| rep(arg1, each=2)) |
| unitCheck(rep(unitList, each=2, length.out=8), |
| unit.c(rep(arg1, each=2), rep(arg2, 2), rep(arg1, each=2, length.out=2))) |
| unitCheck(rep(unitList, each=2, times=3), |
| unit.c(rep(arg1, each=2), rep(arg2, 2), |
| rep(arg1, each=2), rep(arg2, 2), |
| rep(arg1, each=2), rep(arg2, 2))) |
| |
| # Special test |
| # rep() unit.arithmetic where operands have different lengths |
| uaDiffLength <- unit(1:2, "npc") + unit(1:3, "npc") |
| uaSameLength <- unit(c(1, 2, 1), "npc") + unit(1:3, "npc") |
| unitCheck(rep(uaDiffLength, 2), |
| rep(uaSameLength, 2)) |
| |
| |
| # Bug report PR#14170 test |
| |
| x <- unit.c(unit(5,"mm"),unit(3,"npc")) |
| rep(x, 2) |
| rep(x, each=2) |
| rep(x, c(2, 2)) |
| |
| x <- x - unit(1,"mm") |
| rep(x, 2) |
| rep(x, each=2) |
| rep(x, c(2, 2)) |
| |
| |
| ## grid::unit.pmax, PR#14443 |
| x <- unit(1, "cm") |
| stopifnot(length(unit.pmax(x)) == 1L, length(unit.pmin(x)) == 1L) |
| ## was 3 in R <= 2.12.0 |
| |
| # Unit subassignment |
| a <- unit(1:3, c("cm", "in", "npc")) |
| b <- a + unit(1, "npc") |
| a[2] <- unit(2,"pt") |
| b[2] <- unit(2,"npc") |
| |
| unitCheck(a, unit(1:3, c("cm", "pt", "npc"))) |
| unitCheck(b, unit.c(unit(1, "cm") + unit(1, "npc"), |
| unit(2, "npc"), |
| unit(3, "npc") + unit(1, "npc"))) |
| |
| c <- unit(1:10, "mm") |
| |
| # assign to range |
| c[5:9] <- unit(9:5, "pt") |
| unitCheck(c, unit(c(1:4, 9:5, 10), |
| c(rep("mm", 4), rep("pt", 5), "mm"))) |
| |
| # recycle |
| c[2:3] <- unit(1, "in") + unit(.5, "npc") |
| unitCheck(c, unit.c(unit(1, "mm"), |
| rep(unit(1, "in") + unit(.5, "npc"), 2), |
| unit(4, "mm"), |
| unit(9:5, "pt"), |
| unit(10, "mm"))) |
| |
| # recycle non-multiple |
| c[6:8] <- stringWidth(c("a", "b")) |
| unitCheck(c, unit.c(unit(1, "mm"), |
| rep(unit(1, "in") + unit(.5, "npc"), 2), |
| unit(4, "mm"), |
| unit(9, "pt"), |
| stringWidth(c("a", "b", "a")), |
| unit(5, "pt"), |
| unit(10, "mm"))) |
| |
| ## Bug fix for sum() of complex units |
| u1 = 0.4*sum(unit(1, "inch"), unit(1, "mm")) |
| u2 = 0.1*sum(unit(1, "inch"), unit(1, "mm")) |
| unitCheck(u1 + u2, |
| 0.5*sum(unit(1, "inch"), unit(1, "mm"))) |
| unitCheck(sum(u1, u2), |
| sum(unit(c(0.4, .4, .1, .1), c("in", "mm", "in", "mm")))) |
| unitCheck(sum(unit.c(u1, u2)), |
| sum(unit(c(0.4, .4, .1, .1), c("in", "mm", "in", "mm")))) |