test_that("Test case when footnote and source display in all pages", { m1 <- iris[1:2, ] |> rtf_body(as_colheader = TRUE, border_color_left = "red") |> rtf_title("title") |> rtf_source("source") m2 <- iris[3:4, ] |> rtf_body(as_colheader = TRUE) m3 <- iris[5:6, ] |> rtf_body(as_colheader = TRUE) m <- list(m1, m2, m3) attr(m1, "page")$page_title <- "all" attr(m1, "page")$page_footnote <- "all" attr(m1, "page")$page_source <- "all" attr(m2, "page")$page_title <- "all" attr(m2, "page")$page_footnote <- "all" attr(m2, "page")$page_source <- "all" attr(m3, "page")$page_title <- "all" attr(m3, "page")$page_footnote <- "all" attr(m3, "page")$page_source <- "all" m_out <- m |> rtf_encode_list() expect_snapshot_output(m_out) }) test_that("Test case when page width, height, or orientation are not consistent", { m1 <- iris[1:2, ] |> rtf_body() m2 <- iris[3:4, ] |> rtf_page(width = 9) |> rtf_body() m3 <- iris[3:4, ] |> rtf_page(height = 10) |> rtf_body() m4 <- iris[3:4, ] |> rtf_page(orientation = "landscape") |> rtf_body() width_diff <- list(m1, m2) height_diff <- list(m1, m3) orientation_diff <- list(m1, m4) expect_error(rtf_encode_list(width_diff)) expect_error(rtf_encode_list(height_diff)) expect_error(rtf_encode_list(orientation_diff)) }) test_that("Test case when footnote location or source location are not consistent, page_footnote or page_source != 'last', length of list == 1", { m1 <- iris[1:2, ] |> rtf_footnote("footer 1") |> rtf_body() attr(m1, "page")$page_footnote <- "all" m2 <- iris[3:4, ] |> rtf_body() m3 <- iris[3:4, ] |> rtf_source("source") |> rtf_body() attr(m3, "page")$page_source <- "all" m4 <- iris[3:4, ] |> rtf_body() attr(m4, "page")$page_footnote <- "all" m5 <- iris[3:4, ] |> rtf_source("source") |> rtf_body() attr(m5, "page")$page_source <- "all" footnote_diff <- list(m1, m2) source_diff <- list(m2, m3) footnote_all <- list(m1, m4) source_all <- list(m3, m5) onelist <- list(m2) expect_error(rtf_encode_list(footnote_diff)) expect_error(rtf_encode_list(source_diff)) expect_error(rtf_encode_list(footnote_all)) expect_error(rtf_encode_list(source_all)) expect_error(rtf_encode_list(onelist)) }) test_that("Test case when having multiple footnotes or sources", { m1 <- iris[1:2, ] |> rtf_footnote("footer 1") |> rtf_source("source 1") |> rtf_body() m2 <- iris[3:4, ] |> rtf_footnote("footer 2") |> rtf_body() m3 <- iris[3:4, ] |> rtf_source("source 2") |> rtf_body() footnote_multi <- list(m1, m2) source_multi <- list(m1, m3) expect_message(rtf_encode_list(footnote_multi), "Only rtf_footnote in first item is used") expect_message(rtf_encode_list(source_multi), "Only rtf_source in first item is used") }) test_that("Test nrow is consistent with first list", { m1 <- iris |> rtf_body() m2 <- iris |> rtf_page( nrow = 10, border_color_first = "red", border_color_last = "red" ) |> rtf_body() m3 <- iris |> rtf_body() tbl <- list(m1, m2, m3) n <- length(tbl) tbl[2:n] <- lapply(tbl[2:n], function(x) { attr(x, "page")$nrow <- attr(tbl[[1]], "page")$nrow x }) attr(tbl[[2]], "page")$border_color_first expect_equal(attr(tbl[[2]], "page")$nrow, 40) m1 <- iris |> rtf_body() m2 <- iris |> rtf_page( nrow = 10, border_color_first = "red", border_color_last = "red" ) |> rtf_body() m3 <- iris |> rtf_body() tbl <- list(m1, m2, m3) n <- length(tbl) tbl[2:(n - 1)] <- lapply(tbl[2:(n - 1)], function(x) { attr(x, "page")$border_first <- NULL attr(x, "page")$border_last <- NULL attr(x, "page")$border_color_first <- NULL attr(x, "page")$border_color_last <- NULL x }) expect_equal(attr(tbl[[2]], "page")$border_first, NULL) expect_equal(attr(tbl[[2]], "page")$border_last, NULL) expect_equal(attr(tbl[[2]], "page")$border_color_first, NULL) expect_equal(attr(tbl[[2]], "page")$border_color_last, NULL) }) test_that("Test border_color_first, border_color_last, border_first, and nrow", { m1 <- iris[1:15, ] |> rtf_page( nrow = 5, border_color_first = "red" ) |> rtf_body() m2 <- iris[31:50, ] |> rtf_page( border_first = "double", border_last = "double" ) |> rtf_body() m3 <- iris[51:60, ] |> rtf_page(border_color_last = "red") |> rtf_body() tbl <- list(m1, m2, m3) tbl_out <- tbl |> rtf_encode_list() expect_snapshot_output(tbl_out) }) test_that("Test when orientation are different in the list", { m1 <- iris[1:15, ] |> rtf_page( nrow = 5, border_color_first = "red", orientation = "landscape" ) |> rtf_body() m2 <- iris[31:50, ] |> rtf_page( border_first = "double", border_last = "double" ) |> rtf_body() m3 <- iris[51:60, ] |> rtf_page(border_color_last = "red") |> rtf_body() tbl <- list(m1, m2, m3) expect_error(tbl_out <- tbl |> rtf_encode_list()) }) test_that("Test case to split page", { m1 <- iris[1:31, ] |> rtf_page( nrow = 4, ) |> rtf_body() m2 <- iris[40:50, ] |> rtf_body() tbl <- list(m1, m2) tbl |> rtf_encode_list() |> expect_snapshot_output() })