skip_if_not_installed("openxlsx") test_that("Simple conversion works", { hx <- huxtable(a = 1:3, b = 4:6) expect_silent(wb <- as_Workbook(hx)) expect_s4_class(wb, "Workbook") }) test_that("Text properties work", { hx <- huxtable(a = 1:3, b = 4:6) font(hx)[1, 1] <- "Times New Roman" font_size(hx)[1, 2] <- 14 bold(hx)[2, 1] <- TRUE italic(hx)[2, 2] <- TRUE text_color(hx)[3, 1] <- "red" number_format(hx)[3, 2] <- "%3.2f" expect_silent(wb <- as_Workbook(hx)) }) test_that("Borders work", { hx <- huxtable(a = 1:3, b = 4:6) top_border(hx)[1, ] <- 1 bottom_border(hx)[1, ] <- 2 left_border(hx)[, 1] <- 1 right_border(hx)[, 2] <- 1 expect_silent(as_Workbook(hx)) }) test_that("Widths and alignment work", { hx <- huxtable(a = 1:3, b = 4:6) col_width(hx) <- c(.7, .3) width(hx) <- .9 expect_silent(as_Workbook(hx)) row_height(hx) <- c(.2, .6, .2) height(hx) <- .8 expect_silent(as_Workbook(hx)) align(hx)[1, 1] <- "right" valign(hx)[1, 2] <- "middle" align(hx)[2, 1] <- "centre" expect_silent(as_Workbook(hx)) }) test_that("Non-numeric colwidths and widths do not fail", { hx <- huxtable(a = 1:3, b = 4:6) col_width(hx) <- c(.7, .3) width(hx) <- "200px" expect_silent(as_Workbook(hx)) col_width(hx) <- c("50px", "150px") expect_silent(as_Workbook(hx)) }) test_that("Captions work", { hx <- huxtable(a = 1:3, b = 4:6) caption(hx) <- "Caption here" for (pos in c("top", "topleft", "topcentre", "topright", "bottom", "bottomleft", "bottomcentre", "bottomright")) { caption_pos(hx) <- pos expect_silent(as_Workbook(hx)) } }) test_that("Can add to an existing workbook", { hx <- huxtable(a = 1:3, b = 4:6) wb <- openxlsx::createWorkbook() expect_silent(wb <- as_Workbook(hx, Workbook = wb)) expect_silent(as_Workbook(hx, Workbook = wb, sheet = "Another sheet")) }) test_that("Can write with offset rows and columns", { hx <- huxtable(a = 1:3, b = 4:6) expect_silent(wb <- as_Workbook(hx, start_col = 3, start_row = 2)) }) test_that("Works for single-column huxtables with and without row names", { hx <- huxtable(1, 2, 3) wb <- openxlsx::createWorkbook() expect_silent(wb <- as_Workbook(hx, Workbook = wb)) hx <- huxtable(a = 1, b = 2, c = 3) wb <- openxlsx::createWorkbook() expect_silent(wb <- as_Workbook(hx, Workbook = wb)) }) test_that("Works for zero-dimension huxtables", { h_nrow0 <- hux(a = character(0), b = character(0), add_colnames = FALSE) h_ncol0 <- hux(a = 1:2)[, FALSE] expect_silent(as_Workbook(h_nrow0)) expect_silent(as_Workbook(h_ncol0)) }) test_that("Data written in appropriate format", { hx <- huxtable(a = 1:2 + 0.5, b = -1:-2 + 0.5, d = letters[1:2], add_colnames = TRUE) wb <- as_Workbook(hx) expect_error(openxlsx::saveWorkbook(wb, file = "test-xlsx.xlsx", overwrite = TRUE), regexp = NA) # openxlsx may emit messages on.exit( if (file.exists("test-xlsx.xlsx")) file.remove("test-xlsx.xlsx") ) dfr <- openxlsx::read.xlsx("test-xlsx.xlsx") expect_type(dfr[[1]], "double") expect_type(dfr[[2]], "double") expect_type(dfr[[3]], "character") expect_equal(dfr[[1]], 1:2 + 0.5) expect_equal(dfr[[2]], -1:-2 + 0.5) expect_equal(dfr[[3]], letters[1:2]) })