tests/testthat/test-wrappers.R

wrapper_insert_test <- function(wrapper, selected_shaker, shaker_name) {
  context(str_glue("salt_insert: {shaker_name}"))

  test_that(str_glue("insert {shaker_name}"), {
    insert_res <- map(battery, function(x) {
      wrapper(x, p = 0.5)
    })
    imap(insert_res, function(x, n) expect_is(x, class = "character", info = n))
    walk2(insert_res, battery_lengths, expect_length)
    imap(insert_res, function(x, n) {
      expect_true(any(map_lgl(x, function(y) {
        any(str_detect(y, fixed(inspect_shaker(selected_shaker))))
      })), info = str_glue("shaker name: {shaker_name} - battery test: {n}"))
    })
  })

  test_that(str_glue("overload insert {shaker_name}"), {
    walk(battery, function(b) {
      expect_warning(salt_insert(b, insertions = selected_shaker, p = 0.5, n = 30))
    })
  })

  test_that("error on zero-length input", {
    expect_error(salt_insert(zero_length, insertions = selected_shaker))
  })
}

wrapper_insert_test(salt_letters, shaker$mixed_letters, "letters")
wrapper_insert_test(salt_punctuation, shaker$punctuation, "punctuation")
wrapper_insert_test(salt_whitespace, shaker$whitespace, "whitespace")
wrapper_insert_test(salt_digits, shaker$digits, "digits")

wrapper_replace_test <- function(wrapper, selected_shaker, shaker_name) {
  context(str_glue("salt_replace: {shaker_name}"))

  test_that(str_glue("replace {shaker_name}"), {
    replace_res <- map(battery, function(x) {
      wrapper(x, p = 0.5, rep_p = 1)
    })
    imap(replace_res, function(x, n) expect_is(x, class = "character", info = n))
    walk2(replace_res, battery_lengths, expect_length)
  })

  test_that("error on zero-length input", {
    expect_error(salt_replace(zero_length, replacements = selected_shaker))
  })
}

wrapper_replace_test(salt_capitalization, replacement_shaker$capitalization, "capitalization")
wrapper_replace_test(salt_decimal_commas, replacement_shaker$decimal_commas, "decimal_commas")
wrapper_replace_test(salt_ocr, replacement_shaker$ocr_errors, "ocr")
mdlincoln/salty documentation built on May 20, 2019, 9:59 a.m.