Skip to content

Commit 5ccef40

Browse files
committed
tests: gen_grob testing
1 parent 8e89e5f commit 5ccef40

File tree

3 files changed

+90
-10
lines changed

3 files changed

+90
-10
lines changed
Binary file not shown.
Binary file not shown.

tests/testthat/test-gen_grob.R

Lines changed: 90 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
context("check grid grob")
22

3-
skip_on_cran()
4-
skip_if_not_installed("doconv")
5-
skip_if_not(doconv::msoffice_available())
6-
library(doconv)
73
library(officer)
84
library(gdtools)
5+
96
register_liberationsans()
107

118
init_flextable_defaults()
12-
set_flextable_defaults(font.family = "Liberation Sans")
9+
10+
set_flextable_defaults(
11+
font.family = "Liberation Sans",
12+
border.color = "#333333")
13+
14+
15+
test_that("png is created", {
16+
ft <- as_flextable(iris)
17+
file <- tempfile(fileext = ".png")
18+
try(invisible(save_as_image(x = ft, path = file, res = 150)),
19+
silent = TRUE)
20+
expect_true(file.exists(file))
21+
expect_gt(file.info(file)$size, 20000)
22+
})
1323

1424
test_that("merged borders", {
1525
local_edition(3)
@@ -24,12 +34,36 @@ test_that("merged borders", {
2434
border = fp_border(color = "red")
2535
)
2636

27-
path <- save_as_image(ft, path = tempfile(fileext = ".png"), res = 150)
28-
expect_snapshot_doc(name = "vmerged-borders", x = path, engine = "testthat")
37+
gr <- gen_grob(ft)
38+
39+
expect_length(gr$children, 10)
40+
41+
expect_equal(gr$children[[3]]$children$borders$children[[1]]$gp$col, "red")
42+
43+
expect_length(gr$children[[1]]$children$borders$children, 2)
44+
expect_equal(gr$children[[1]]$children$borders$children[[1]]$gp$col, "#333333")
45+
expect_equal(gr$children[[1]]$children$borders$children[[1]]$x0, grid::unit(0, "npc"))
46+
expect_equal(gr$children[[1]]$children$borders$children[[1]]$x1, grid::unit(1, "npc"))
47+
expect_equal(gr$children[[1]]$children$borders$children[[1]]$y0, grid::unit(1, "npc"))
48+
expect_equal(gr$children[[1]]$children$borders$children[[1]]$y1, grid::unit(1, "npc"))
49+
50+
expect_equal(gr$children[[1]]$children$borders$children[[2]]$gp$col, "#333333")
51+
expect_equal(gr$children[[1]]$children$borders$children[[2]]$x0, grid::unit(0, "npc"))
52+
expect_equal(gr$children[[1]]$children$borders$children[[2]]$x1, grid::unit(1, "npc"))
53+
expect_equal(gr$children[[1]]$children$borders$children[[2]]$y0, grid::unit(0, "npc"))
54+
expect_equal(gr$children[[1]]$children$borders$children[[2]]$y1, grid::unit(0, "npc"))
55+
56+
expect_length(gr$children[[10]]$children$borders$children, 1)
57+
58+
expect_equal(gr$children[[10]]$children$borders$children[[1]]$gp$col, "#333333")
59+
expect_equal(gr$children[[10]]$children$borders$children[[1]]$x0, grid::unit(0, "npc"))
60+
expect_equal(gr$children[[10]]$children$borders$children[[1]]$x1, grid::unit(1, "npc"))
61+
expect_equal(gr$children[[10]]$children$borders$children[[1]]$y0, grid::unit(0, "npc"))
62+
expect_equal(gr$children[[10]]$children$borders$children[[1]]$y1, grid::unit(0, "npc"))
63+
2964
})
3065

3166
test_that("text wrapping", {
32-
local_edition(3)
3367

3468
text <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
3569
source1 <- "DATA_SOURCE_A.COURSE_TITLE\nDATA_SOURCE_A.SUBJECT_DESCR\nDATA_SOURCE_A.CATALOG_NUMBER"
@@ -45,6 +79,52 @@ test_that("text wrapping", {
4579
ft <- flextable(temp_dat)
4680
ft <- merge_h(ft, part = "body")
4781

48-
path <- save_as_image(ft, path = tempfile(fileext = ".png"), res = 150)
49-
expect_snapshot_doc(name = "long-text-wrapping", x = path, engine = "testthat")
82+
gr <- gen_grob(ft, fit = "fixed")
83+
84+
expect_length(gr$children, 9)
85+
expect_equal(gr$children[[5]]$children$contents$ftgrobs[[1]]$label, source1)
86+
expect_equal(gr$children[[6]]$children$contents$ftgrobs[[1]]$label, source2)
87+
88+
# check wrap on 3 rows
89+
expect_length(gr$children[[5]]$children$contents$children, 3)
90+
expect_length(gr$children[[6]]$children$contents$children, 3)
91+
expect_equal(gr$children[[8]]$children$contents$ftgrobs[[1]]$label, "Notes")
92+
expect_length(gr$children[[8]]$children$contents$children, 1)
93+
expect_equal(gr$children[[9]]$children$contents$ftgrobs[[1]]$label, text)
94+
# check wrap on 3 rows
95+
expect_length(gr$children[[9]]$children$contents$children, 3)
96+
97+
# check that height and width are greater than those of smaller cells
98+
expect_gt(gr$children$cell_2_2$children$contents$ftpar$height,
99+
gr$children$cell_1_2$children$contents$ftpar$height
100+
)
101+
expect_gt(gr$children$cell_2_2$children$contents$ftpar$width,
102+
gr$children$cell_2_1$children$contents$ftpar$width
103+
)
104+
})
105+
106+
test_that("grid with raster", {
107+
skip_if_not_installed("magick")
108+
109+
img.file <- file.path(
110+
R.home("doc"),
111+
"html", "logo.jpg"
112+
)
113+
myft <- flextable(head(iris))
114+
myft <- prepend_chunks(
115+
x = myft,
116+
i = 1:2, j = 1,
117+
as_image(src = img.file),
118+
part = "body"
119+
)
120+
ft <- autofit(myft)
121+
122+
gr <- gen_grob(ft)
123+
124+
expect_s3_class(gr$children[[6]]$children$contents$ftgrobs[[1]], "rastergrob")
125+
expect_s3_class(gr$children[[6]]$children$contents$ftgrobs[[2]], "text")
126+
expect_s3_class(gr$children[[11]]$children$contents$ftgrobs[[1]], "rastergrob")
127+
expect_s3_class(gr$children[[11]]$children$contents$ftgrobs[[2]], "text")
128+
expect_s3_class(gr$children[[12]]$children$contents$ftgrobs[[1]], "text")
50129
})
130+

0 commit comments

Comments
 (0)