test_that("style_xxx works", {
  expect_error(
    style_xxx(7:10, width = 2, digits = 0),
    NA)

  expect_equal(
    style_xxx(7:10, width = 2, digits = 0),
    c("xx", "xx", "xx", "xx")
  )

  expect_equal(
    style_xxx(7:10, width = 5, digits = 2),
    c("xx.xx", "xx.xx", "xx.xx", "xx.xx")
  )

})



test_that("style_xxx works with tbl_ae family", {

  expect_error(
    t1 <- df_adverse_events %>%
      tbl_ae(
        id = patient_id,
        ae = adverse_event,
        soc = system_organ_class,
        by = grade,
        zero_symbol = NULL,
        digits =
          list(purrr::partial(style_xxx, width = 2),
               purrr::partial(style_xxx, width = 4, digits = 1))
      ) %>%
      modify_header(all_ae_cols() ~ "**Grade {by}**") %>%
      modify_spanning_header(all_ae_cols() ~ "**N = xx**"),
    NA)

  expect_error(
    t2 <- df_adverse_events %>%
      tbl_ae_count(
        ae = adverse_event,
        soc = system_organ_class,
        by = grade,
        zero_symbol = NULL,
        digits =
          list(purrr::partial(style_xxx, width = 2))
      ) %>%
      modify_header(all_ae_cols() ~ "**Grade {by}**") %>%
      modify_spanning_header(all_ae_cols() ~ "**N = xx**"),
    NA)

  expect_error(
    t3 <- df_adverse_events %>%
      tbl_ae_focus(
        id = patient_id,
        ae = adverse_event,
        soc = system_organ_class,
        include = c(any_complication, grade3_complication),
        digits =
          list(purrr::partial(style_xxx, width = 2),
               purrr::partial(style_xxx, width = 4, digits = 1))
      ) %>%
      modify_spanning_header(all_ae_cols() ~ "**N = xx**"),
    NA)


  expect_snapshot(as_gt(t1, id = "t1_001"))
  expect_snapshot(as_gt(t2, id = "t2_001"))
  expect_snapshot(as_gt(t3, id = "t3_001"))

})


test_that("style_xxx works with tbl_reg_summary", {

  expect_error(
    t4 <- df_patient_characteristics %>%
      select(marker, trt) %>%
      tbl_reg_summary(
        digits =
          list(
            marker ~ purrr::partial(style_xxx, width = 2),
            trt ~ list(purrr::partial(style_xxx, width = 2),
                       purrr::partial(style_xxx, width = 4, digits = 1))
          )
      ) %>%
      modify_header(stat_0 ~ "**N = xx**"),
    NA)

  expect_error(
    t5 <- df_patient_characteristics %>%
      select(marker, trt) %>%
      tbl_reg_summary(
        digits =
          list(
            marker ~ list(purrr::partial(style_xxx, width = 2), # N
                          purrr::partial(style_xxx, width = 4, digits = 1), # Mean
                          purrr::partial(style_xxx, width = 4, digits = 1), # SD
                          purrr::partial(style_xxx, width = 2), # Median
                          purrr::partial(style_xxx, width = 2), # IQR
                          purrr::partial(style_xxx, width = 2), # Range
                          purrr::partial(style_xxx, width = 2)), # N missing
            trt ~ list(purrr::partial(style_xxx, width = 2),
                       purrr::partial(style_xxx, width = 4, digits = 1))
          )
      ) %>%
      modify_header(stat_0 ~ "**N = xx**"),
    NA)

  expect_snapshot(as.data.frame(t4))
  expect_snapshot(as.data.frame(t5))

})
