ct1 <- clintable(mtcars) ct2 <- ct <- clintable(mtcars) |> clin_alt_pages( key_cols = c("mpg", "cyl", "hp"), col_groups = list( c("disp", "drat", "wt"), c("qsec", "vs", "am"), c("gear", "carb") ) ) test_that("col_width argument checks", { # Bad input expect_error(clin_col_widths(1), "inherits") # Invalid type expect_error( clin_col_widths(ct1, drat = "a"), "All width arguments" ) # Column doesn't exist expect_error( clin_col_widths(ct1, blah = .2), "The following columns" ) # Single argument >1 expect_error( clin_col_widths(ct1, drat = 2), "Width arguments" ) # Args sum to >1 expect_error( clin_col_widths(ct1, drat = .6, gear = .5), "Columns widths" ) # Alternating args sum to >1 expect_error( clin_col_widths(ct2, mpg = .6, gear = .5), "Key columns" ) }) test_that("Widths set properly - standard table", { ct3 <- clin_col_widths(ct1, mpg = .1, disp = .2) colwidths <- ct3$body$colwidths expect_equal(sum(colwidths), unname(clin_default_table_width())) expect_equal(colwidths[which(names(mtcars) == "mpg")], unname(.1 * clin_default_table_width())) expect_equal(colwidths[which(names(mtcars) == "disp")], unname(.2 * clin_default_table_width())) }) test_that("Widths set properly - standard table", { ct3 <- clin_col_widths(ct2, mpg = .1, disp = .2) colwidths <- ct3$body$colwidths expect_equal(colwidths[which(names(mtcars) == "mpg")], unname(.1 * clin_default_table_width())) expect_equal(colwidths[which(names(mtcars) == "disp")], unname(.2 * clin_default_table_width())) v1 <- which((names(mtcars) %in% ct3$clinify_config$key_cols) | (names(mtcars) %in% ct3$clinify_config$col_groups[[1]])) v2 <- which((names(mtcars) %in% ct3$clinify_config$key_cols) | (names(mtcars) %in% ct3$clinify_config$col_groups[[2]])) v3 <- which((names(mtcars) %in% ct3$clinify_config$key_cols) | (names(mtcars) %in% ct3$clinify_config$col_groups[[3]])) expect_equal(sum(ct3$body$colwidths[v1]), unname(clin_default_table_width())) expect_equal(sum(ct3$body$colwidths[v2]), unname(clin_default_table_width())) expect_equal(sum(ct3$body$colwidths[v3]), unname(clin_default_table_width())) })