local_edition(2) skip_if_not_installed("dplyr") test_that("select, rename and relocate", { ht <- hux(a = 1:2, b = 1:2, c = 1:2, d = 1:2) bold(ht)[1, ] <- TRUE ht2 <- dplyr::select(ht, b:c) expect_equivalent(bold(ht2), matrix(c(TRUE, FALSE, TRUE, FALSE), 2, 2)) expect_identical(ht2, ht[, 2:3]) ht3 <- dplyr::rename(ht, jim = d, bob = c) expect_equivalent(colnames(ht3), c("a", "b", "bob", "jim")) expect_equivalent(bold(ht3), bold(ht)) if (packageVersion("dplyr") > "0.8.5") { ht4 <- dplyr::relocate(ht, b , a, .after = d) expect_identical(ht4, ht[c("c", "d", "b", "a")]) ht5 <- dplyr::relocate(ht, b , a, .before = d) expect_identical(ht5, ht[c("c", "b", "a", "d")]) } }) test_that("slice, filter, arrange and pull work", { ht <- hux(a = 1:4, b = c(1, 3, 4, 2), add_colnames = FALSE) row_height(ht) <- c(.4, .2, .1, .3) ht2 <- dplyr::slice(ht, c(4, 2)) expect_identical(ht2, ht[c(4, 2), ]) ht3 <- dplyr::arrange(ht, b) expect_identical(ht3, ht[c(1, 4, 2, 3), ]) ht4 <- dplyr::filter(ht, a <= 2, b <= 2) expect_identical(ht4, ht[1, ]) vec <- dplyr::pull(ht, a) expect_identical(vec, ht$a) }) test_that("mutate, mutate_ and transmute work", { ht <- hux(a = 1:3, b = 1:3) bold(ht)[1, ] <- TRUE ht2 <- dplyr::mutate(ht, x = a + b) expect_equivalent(ht2$x, c(2, 4, 6)) expect_equivalent(bold(ht2)[, 3], c(TRUE, FALSE, FALSE)) ht3 <- dplyr::mutate(ht, x = a + b, copy_cell_props = FALSE) expect_equivalent(bold(ht3)[, 3], c(FALSE, FALSE, FALSE)) expect_identical(names(ht3), c("a", "b", "x")) ht4 <- dplyr::transmute(ht, x = a + b, a = a + b) expect_equivalent(ht4$x, c(2, 4, 6)) expect_equivalent(bold(ht4)[, "a"], c(TRUE, FALSE, FALSE)) expect_silent(ht5 <- dplyr::mutate(ht, a = NULL)) expect_equivalent(dim(font(ht5)), c(3, 1)) ht6 <- dplyr::mutate_(ht, .dots = list(x = quote(a + b))) expect_equivalent(ht6$x, c(2, 4, 6)) expect_equivalent(bold(ht6)[, 3], c(TRUE, FALSE, FALSE)) ht7 <- dplyr::mutate_(ht, .dots = list(x = quote(a + b), copy_cell_props = FALSE)) expect_equivalent(ht7$x, c(2, 4, 6)) expect_equivalent(bold(ht7)[, 3], c(FALSE, FALSE, FALSE)) expect_identical(names(ht7), c("a", "b", "x")) }) test_that("set_* works with magrittr pipe", { ht_orig <- hux(a = 1:2, b = 1:2) expect_silent(ht2 <- ht_orig %>% set_font("times")) expect_silent(ht3 <- ht_orig %>% set_all_borders(1)) expect_equivalent(font(ht2), matrix("times", 2, 2)) expect_equivalent(brdr_thickness(top_border(ht3)), matrix(1, 2, 2)) }) test_that("dplyr select helpers can be used in set_* functions", { suppressWarnings(library(tidyselect)) ht <- hux(a = 1:5, big = 1:5, bog = 1:5, bin = 1:5) expect_silent(ht2 <- set_bold(ht, everywhere, starts_with("b"), TRUE)) expect_equivalent(bold(ht2)[, -1], matrix(TRUE, 5, 3)) expect_equivalent(bold(ht2)[, 1], rep(FALSE, 5)) expect_silent(ht3 <- set_bold(ht, everywhere, ends_with("g"), TRUE)) expect_equivalent(bold(ht3)[, 2:3], matrix(TRUE, 5, 2)) expect_equivalent(bold(ht3)[, c(1, 4)], matrix(FALSE, 5, 2)) expect_silent(ht4 <- set_bold(ht, everywhere, contains("i"), TRUE)) expect_equivalent(bold(ht4)[, c(2, 4)], matrix(TRUE, 5, 2)) expect_equivalent(bold(ht4)[, c(1, 3)], matrix(FALSE, 5, 2)) expect_silent(ht5 <- set_bold(ht, everywhere, matches("b[^o]"), TRUE)) expect_equivalent(bold(ht5)[, c(2, 4)], matrix(TRUE, 5, 2)) expect_equivalent(bold(ht5)[, c(1, 3)], matrix(FALSE, 5, 2)) col_names <- c("big", "bog") expect_silent(ht6 <- set_bold(ht, everywhere, one_of(col_names), TRUE)) expect_equivalent(bold(ht6)[, 2:3], matrix(TRUE, 5, 2)) expect_equivalent(bold(ht6)[, c(1, 4)], matrix(FALSE, 5, 2)) expect_silent(ht7 <- set_bold(ht, everywhere, last_col(), TRUE)) expect_equivalent(bold(ht7)[, 4], rep(TRUE, 5)) expect_equivalent(bold(ht7)[, 1:3], matrix(FALSE, 5, 3)) expect_silent(ht8 <- set_bold(ht, everywhere, last_col(1), TRUE)) expect_equivalent(bold(ht8)[, 3], rep(TRUE, 5)) expect_equivalent(bold(ht8)[, c(1, 2, 4)], matrix(FALSE, 5, 3)) expect_silent(ht9 <- set_bold(ht, everywhere, everything(), TRUE)) expect_equivalent(bold(ht9), matrix(TRUE, 5, 4)) ht_nr <- hux(a3 = 1:5, a2 = 1:5, a1 = 1:5, b1 = 1:5) expect_silent(ht10 <- set_bold(ht_nr, everywhere, num_range("a", 1:2), TRUE)) expect_equivalent(bold(ht10)[, 2:3], matrix(TRUE, 5, 2)) expect_equivalent(bold(ht10)[, c(1, 4)], matrix(FALSE, 5, 2)) })