context("check widths and heights") library(utils) library(xml2) test_that("dimensions are valid", { dummy_df <- data.frame( my_col = rep(letters[1:3], each = 2), stringsAsFactors = FALSE ) ft <- flextable(dummy_df) dims <- dim(ft) expect_length(dims$widths, 1 ) expect_length(dims$heights, 7 ) ft <- add_header(ft, my_col = "second row header") dims <- dim(ft) expect_length(dims$widths, 1 ) expect_length(dims$heights, 8 ) ft <- height_all(ft, height = .15, part = "all") dims <- dim(ft) expect_true(all( is.finite(dims$widths))) expect_true(all( is.finite(dims$heights))) typology <- data.frame( col_keys = c( "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species" ), what = c("Sepal", "Sepal", "Petal", "Petal", "Species"), measure = c("Length", "Width", "Length", "Width", "Species"), stringsAsFactors = FALSE ) ft <- flextable( head( iris ) ) ft <- set_header_df(ft, mapping = typology, key = "col_keys" ) dims <- dim(ft) expect_length(dims$widths, 5 ) expect_length(dims$heights, 8 ) }) test_that("autofit and dim_pretty usage", { typology <- data.frame( col_keys = c( "Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species" ), what = c("Sepal", "Sepal", "Petal", "Petal", "Species"), measure = c("Length", "Width", "Length", "Width", "Species"), stringsAsFactors = FALSE ) ft <- flextable( head( iris ) ) ft <- set_header_df(ft, mapping = typology, key = "col_keys" ) ft <- autofit( ft, add_w = 0.0, add_h = 0.0 ) dims <- dim(ft) expect_true(all( is.finite(dims$widths))) expect_true(all( is.finite(dims$heights))) dims <- dim_pretty(ft) expect_true(all( is.finite(dims$widths))) expect_true(all( is.finite(dims$heights))) }) test_that("height usage", { dummy_df <- data.frame( my_col1 = rep(letters[1:3], each = 2), my_col2 = rep(letters[4:6], each = 2), stringsAsFactors = FALSE ) ft <- flextable(dummy_df) dims <- dim_pretty(ft) expect_silent({ft <- height_all(ft, height = .25, part = "all") }) expect_error({ft <- height(ft, height = dims$heights[-1], part = "all") }) expect_error({ft <- height(ft, height = 1:3, part = "body") }) }) test_that("width usage", { dummy_df <- data.frame( my_col1 = rep(letters[1:3], each = 2), my_col2 = rep(letters[4:6], each = 2), stringsAsFactors = FALSE ) ft <- flextable(dummy_df) expect_silent(width(ft, j = "my_col1", width = 1)) expect_silent(width(ft, j = 1:2, width = .7)) expect_error(width(ft, j = 1:2, width = rep(.7, 3))) }) test_that("autofit with horizontal spans", { dat <- data.frame( `Header should span 2 cols` = c("Whoooo", "Whaaaat", "Whyyyyy"), dummy_title = c("Whoooo", "Whaaaat", "Whyyyyy"), check.names = FALSE ) ft <- flextable(dat) ft <- merge_at( x = ft, i = 1, j = 1:2, part = "header") dims_divided <- dim_pretty(ft, hspans = "divided") dims_included <- dim_pretty(ft, hspans = "included") expect_gt(dims_included$widths[1], dims_divided$widths[1]) dims_none <- dim_pretty(ft, hspans = "none") dims_included_no_header <- dim_pretty(ft, hspans = "included", part = "body") expect_equal(dims_none$widths, dims_included_no_header$widths) }) test_that("HTML table width when autofit layout", { x <- data.frame( x = c("[-0.36, -0.01]", "[0, 0]", "000, 000", "0000 0000")) ft <- flextable(x) ft <- set_table_properties( x = ft, layout = "autofit", opts_html = list(shadow = FALSE) ) str <- flextable:::gen_raw_html(ft) expect_false(grepl("table-layout:auto;width:", str, fixed = TRUE)) ft <- set_table_properties( x = ft, layout = "autofit", width = .1, opts_html = list(shadow = FALSE) ) str <- flextable:::gen_raw_html(x = ft) expect_true(grepl("table-layout:auto;width:", str, fixed = TRUE)) })
Generated by dwww version 1.15 on Sun Jun 16 10:55:16 CEST 2024.