tests/testthat/test-check_args.R

mtcars_test <- mtcars
mtcars_test$negnum <- range(-3, 2, 5)
mtcars_test$allna <- as.numeric(NA)
mtcars_test$somena <- rep(c(NA, 4))
mtcars_test$str <- "string"
mtcars_test$USUBJID <- row.names(mtcars_test)
test_eval <- "am"
test_that("checks for univar function correctly", {
  # df
  expect_visible(univar(mtcars_test, colvar = "gear", rowvar = "wt"))
  expect_visible(univar(mtcars_test, colvar = test_eval, rowvar = "wt"))
  expect_error(
    univar(c(1, 2), colvar = "gear", rowvar = "wt"),
    "Argument df to function univar should be type data.frame"
  )
  # rowvar
  expect_visible(univar(mtcars_test, colvar = "gear", rowvar = "somena"))
  expect_error(univar(mtcars_test, colvar = "gear", rowvar = "allna"))
  # geometric estimable check
  expect_error(univar(mtcars_test, colvar = "gear", rowvar = "negnum", statlist = statlist(c("GSD", "GSE"))))
  # wide bool check
  expect_visible(univar(mtcars_test, colvar = "gear", rowvar = "wt", wide = TRUE))
  expect_error(univar(mtcars_test, colvar = "gear", rowvar = "wt", wide = "str"))
  # check statlist
  expect_error(univar(mtcars_test, colvar = "gear", rowvar = "wt", statlist = statlist(c("NOT A STAT"))))
})

test_that("checks for freq function correctly", {
  # df
  expect_visible(freq(mtcars_test, colvar = "gear", rowvar = "cyl"))
  expect_visible(freq(mtcars_test, colvar = "gear", rowvar = test_eval))
  expect_error(
    freq(c(1, 2), colvar = "gear", rowvar = "cyl"),
    ""
  )
})

test_that("checks for nested_freq function correctly", {
  # df
  expect_visible(nested_freq(mtcars_test, colvar = "gear", rowvar = "cyl*carb"))
  expect_visible(nested_freq(mtcars_test, colvar = test_eval, rowvar = "cyl*carb"))
  expect_error(
    nested_freq(c(1, 2), colvar = "gear", rowvar = "cyl*carb"),
    "Argument df to function nested_freq should be type data.frame"
  )
  # rowvar nesting
  expect_visible(nested_freq(mtcars_test, colvar = "gear", rowvar = "cyl*carb"))
  expect_visible(nested_freq(mtcars_test, colvar = "gear", rowvar = "cyl*carb*am"))
  expect_error(
    nested_freq(mtcars_test, colvar = "gear", rowvar = "cyl"),
    "Argument rowvar to function nested_freq is incorrectly formatted."
  )
  expect_error(
    nested_freq(mtcars_test, colvar = "gear", rowvar = "cyl*am*vs*disp"),
    "Argument rowvar to function nested_freq is incorrectly formatted."
  )
})

test_that("check updates to check gentlg", {
  basefreq <- freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("n"))
  )

  suppressWarnings(expect_error(gentlg(
    huxme = basefreq,
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "RTF",
    opath = "ERROR",
    colheader = c("Test", "One", "Two", "The")
  ), "opath 'ERROR' does not exist for function gentlg"))


  expect_error(gentlg(
    huxme = basefreq,
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "ERROR",
    colheader = c("Test", "One", "Two", "The")
  ))


  suppressWarnings(expect_error(gentlg(
    huxme = basefreq,
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "RTF",
    wcol = c(1, 1),
    colheader = NA
  )), "wcol's length must be 1 or the length of final output")


  suppressWarnings(expect_error(gentlg(
    huxme = basefreq,
    tlf = "Figure",
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "RTF",
    plotnames = "ERROR",
    colheader = NA
  ), "plotnames 'ERROR' does not exist for function gentlg"))


  expect_error(gentlg(
    huxme = basefreq,
    tlf = "Figure",
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "RTF",
    idvars = "ERROR",
    colheader = NA
  ), "idvars 'ERROR' does not exist in huxme or is all NA for function: gentlg")


  expect_error(gentlg(
    huxme = basefreq,
    file = "vignettes/validation/test_code/test_code_output/test",
    title = "Test",
    format = "RTF",
    orientation = "ERROR"
  ), "orientation 'ERROR' is not either 'landscape' or 'portrait' for function gentlg")
})


test_that("test freq update", {
  expect_error(
    freq(cdisc_adsl,
      rowvar = "RACE",
      colvar = NA,
      statlist = statlist(c("n"))
    ),
    "colvar to function freq should be type character"
  )

  expect_error(
    suppressWarnings(freq(cdisc_adsl,
      rowvar = "RACE",
      colvar = "",
      statlist = statlist(c("n"))
    )),
    "colvar '' does not exist in df or is all NA for function: freq"
  )

  expect_error(
    suppressWarnings(freq(cdisc_adsl,
      rowvar = "RACE",
      colvar = "MISSING",
      statlist = statlist(c("n"))
    )),
    "colvar 'MISSING' does not exist in df or is all NA for function: freq"
  )

  expect_error(
    suppressWarnings(freq(cdisc_adsl,
      rowvar = NA,
      colvar = "RACE",
      statlist = statlist(c("n"))
    )),
    "Argument rowvar to function freq should be type character"
  )

  expect_error(
    freq(cdisc_adsl,
      rowvar = "",
      colvar = "RACE",
      statlist = statlist(c("n"))
    ),
    "rowvar '' does not exist in df or is all NA for function: freq"
  )

  expect_error(
    freq(cdisc_adsl,
      rowvar = "MISSING",
      colvar = "RACE",
      statlist = statlist(c("n"))
    ),
    "rowvar 'MISSING' does not exist in df or is all NA for function: freq"
  )

  expect_error(
    freq(cdisc_adsl,
      rowvar = "RACE",
      colvar = "TRT01P",
      tablebyvar = "MISSING",
      statlist = statlist(c("n"))
    ),
    "tablebyvar 'MISSING' does not exist in df or is all NA for function: freq"
  )

  expect_error(
    freq(cdisc_adsl,
      rowvar = "RACE",
      colvar = "TRT01P",
      rowbyvar = "MISSING",
      statlist = statlist(c("n"))
    ),
    "rowbyvar 'MISSING' does not exist in df or is all NA for function: freq"
  )


  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("N"))
  ))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c())
  ))
  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("ERROR"))
  ))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "ITTFL"
  ), paste0(paste0(c("colvar", "rowvar"), collapse = ", "), " all have value ", "ITTFL", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "ITTFL"
  ), paste0(paste0(c("rowvar", "rowbyvar"), collapse = ", "), " all have value ", "ITTFL", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    tablebyvar = "ITTFL"
  ), paste0(paste0(c("tablebyvar", "rowvar"), collapse = ", "), " all have value ", "ITTFL", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "TRT01PN"
  ), paste0(paste0(c("colvar", "rowbyvar"), collapse = ", "), " all have value ", "TRT01PN", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "TRT01PN"
  ), paste0(paste0(c("colvar", "rowbyvar"), collapse = ", "), " all have value ", "TRT01PN", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    tablebyvar = "TRT01PN"
  ), paste0(paste0(c("colvar", "tablebyvar"), collapse = ", "), " all have value ", "TRT01PN", " for function ", "freq", "\n\n"))

  expect_error(freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "SEX",
    tablebyvar = "SEX"
  ), paste0(paste0(c("tablebyvar", "rowbyvar"), collapse = ", "), " all have value ", "SEX", " for function ", "freq", "\n\n"))
})

#' @editor Aidan Ceney
#' @editDate 2022-03-02
test_that("Test univar new checks", {
  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = NULL,
      rowvar = "AVAL",
      statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
      alpha = .10
    ), "Argument colvar to function univar is required but no value has been supplied"
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = NULL,
      statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
      alpha = .10
    ), "Argument rowvar to function univar is required but no value has been supplied"
  )

  expect_error(
    # Supress addtional warning
    suppressWarnings({
      univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
        colvar = "MISSING",
        rowvar = "AVAL",
        statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
        alpha = .10
      )
    }), "colvar 'MISSING' does not exist in df or is all NA for function: univar"
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "MISSING",
      statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
      alpha = .10
    ), "rowvar 'MISSING' does not exist in df or is all NA for function: univar"
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      tablebyvar = "MISSING",
      statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
      alpha = .10
    ), "tablebyvar 'MISSING' does not exist in df or is all NA for function: univar"
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      rowbyvar = "MISSING",
      statlist = statlist(c("N", "MEAN_CI", "MIN", "MAX")),
      alpha = .10
    ), "rowbyvar 'MISSING' does not exist in df or is all NA for function: univar"
  )


  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      statlist = statlist(c()),
      alpha = .10
    )
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      statlist = statlist(c("")),
      alpha = .10
    )
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      statlist = statlist(c("ERROR")),
      alpha = .10
    )
  )


  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      tablebyvar = "TRTA",
      alpha = .10
    ), "colvar, tablebyvar all have value TRTA for function univar"
  )




  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      rowbyvar = "TRTA",
      alpha = .10
    ), "colvar, rowbyvar all have value TRTA for function univar"
  )


  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      rowbyvar = "SEX",
      tablebyvar = "SEX",
      alpha = .10
    ), "tablebyvar, rowbyvar all have value SEX for function univar"
  )





  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      alpha = 1.5
    ), "alpha must be a number in between 0 and 1 for function univar"
  )


  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      alpha = -.5
    ), "alpha must be a number in between 0 and 1 for function univar"
  )


  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      precisionby = "SEX"
    )
  )

  expect_error(
    univar(cdisc_advs %>% filter(PARAMCD %in% c("HEIGHT", "WEIGHT")),
      colvar = "TRTA",
      rowvar = "AVAL",
      precisionon = "MISSING"
    ), "precisionon 'MISSING' does not exist in df or is all NA for function: univar"
  )
})

test_that("new check errors nested freq", {
  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*RACE",
    colvar = NA,
    statlist = statlist(c("n"))
  ), "Argument colvar to function nested_freq should be type character")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "RACE",
    colvar = "",
    statlist = statlist(c("n"))
  ), "Argument rowvar to function nested_freq is incorrectly formatted.")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*RACE",
    colvar = "MISSING",
    statlist = statlist(c("n"))
  ), "colvar 'MISSING' does not exist in df or is all NA for function: nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = NA,
    colvar = "RACE",
    statlist = statlist(c("n"))
  ), "Argument rowvar to function nested_freq should be type character")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "",
    colvar = "RACE",
    statlist = statlist(c("n"))
  ), "Argument rowvar to function nested_freq is incorrectly formatted.")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "MISSING",
    colvar = "RACE",
    statlist = statlist(c("n"))
  ), "Argument rowvar to function nested_freq is incorrectly formatted.")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*RACE",
    colvar = "TRT01P",
    tablebyvar = "MISSING",
    statlist = statlist(c("n"))
  ), "tablebyvar 'MISSING' does not exist in df or is all NA for function: nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*RACE",
    colvar = "TRT01P",
    rowbyvar = "MISSING",
    statlist = statlist(c("n"))
  ), "rowbyvar 'MISSING' does not exist in df or is all NA for function: nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("N"))
  ))
  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c())
  ))
  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("ERROR"))
  ))

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    cutoff = 2,
    cutoff_stat = "ERROR"
  ), "Cutoff stat ERROR for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "ITTFL"
  ), "colvar, nested rowvar 2 all have value ITTFL for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "ITTFL"
  ), "rowbyvar, nested rowvar 2 all have value ITTFL for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    tablebyvar = "ITTFL"
  ), "tablebyvar, nested rowvar 2 all have value ITTFL for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "TRT01PN"
  ), "colvar, rowbyvar all have value TRT01PN for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "TRT01PN"
  ), "colvar, rowbyvar all have value TRT01PN for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    tablebyvar = "TRT01PN"
  ), "tablebyvar all have value TRT01PN for function nested_freq")

  expect_error(nested_freq(cdisc_adsl,
    rowvar = "STUDYID*ITTFL",
    colvar = "TRT01PN",
    rowbyvar = "SEX",
    tablebyvar = "SEX"
  ), "tablebyvar, rowbyvar all have value SEX for function nested_freq")
})


test_that("Errors for check generate results", {
  expect_error(generate_results(NULL))

  expect_error(generate_results(table_metadata))


  expect_error(generate_results(tibble::tribble(~Test, ~tbltype, "TEST", "Test")))


  table_metadata <- tibble::tribble(
    ~anbr, ~func, ~tbltype, ~df, ~colvar, ~rowvar,
    1, "freq", "Test", "Missing", "TRT01PN", "ITTFL"
  )
  col_metadata <- tibble::tribble(
    ~tbltype, ~coldef, ~decode, ~span1,
    "Test", "Xanomeline High Dose", "High Dose", "Xanomeline"
  )
  expect_error(generate_results(tibble::tribble(
    ~anbr, ~func, ~tbltype, ~df, ~colvar, ~rowvar,
    1, "freq", "Test", "Missing", "TRT01PN", "ITTFL"
  ), column_metadata = col_metadata, tbltype = "Test"))


  table_metadata <- tibble::tribble(
    ~anbr, ~func, ~tbltype, ~df, ~colvar, ~rowvar,
    1, "ERROR", "Test", "cdisc_adsl", "TRT01PN", "ITTFL"
  )
  col_metadata <- tibble::tribble(
    ~tbltype, ~coldef, ~decode, ~span1,
    "Test", "Xanomeline High Dose", "High Dose", "Xanomeline"
  )
  expect_error(generate_results(tibble::tribble(
    ~anbr, ~func, ~tbltype, ~df, ~colvar, ~rowvar,
    1, "ERROR", "Test", "cdisc_adsl", "TRT01PN", "ITTFL"
  ), column_metadata = col_metadata, tbltype = "Test"))
})

test_that("Test add_format", {
  basefreq <- freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN",
    statlist = statlist(c("n"))
  )


  expect_error(basefreq %>% add_format(tableby = ""), "tableby '' does not exist in df or is all NA for function: add_format")
  expect_error(basefreq %>% add_format(tableby = NA), "Argument tableby to function add_format should be type character")
  expect_error(basefreq %>% add_format(tableby = "MISSING"), "tableby 'MISSING' does not exist in df or is all NA for function: add_format")
  expect_error(basefreq %>% add_format(groupby = ""), "groupby '' does not exist in df or is all NA for function: add_format")
  expect_error(basefreq %>% add_format(groupby = NA), "Argument groupby to function add_format should be type character")
  expect_error(basefreq %>% add_format(groupby = "MISSING"), "groupby 'MISSING' does not exist in df or is all NA for function: add_format")

  expect_error(basefreq %>% dplyr::select(-row_type) %>% add_format(), "Reqiured fields anbr,  for function add_format")
})

test_that("Sparse dfs pass check_wcol works as expected with sparse dfs", {
  a_freq <- freq(cdisc_adsl,
    rowvar = "ITTFL",
    colvar = "TRT01PN"
  ) %>%
    select(-c("row_type", "group_level"))

  expect_equal(check_wcol(a_freq, c(1, 1, 1, 1)), NULL)
})

Try the tidytlg package in your browser

Any scripts or data that you put into this service are public.

tidytlg documentation built on July 2, 2025, 5:09 p.m.