tests/testthat/test_zi_validate.R

context("test zi_validate function")

# create test data ------------------------------------------------

correct_zips_1 <- c("63088", "63108", "63139")
correct_zips_2 <- c("630", "631", "632")

incorrect_zips_1 <- c("63088", "63108", "631397")
incorrect_zips_2 <- c("63088", "63108", "456")
incorrect_zips_3 <- c("630", "631", "4")
incorrect_zips_4 <- c("63088", "63108", "ham")
incorrect_zips_5 <- c(63088, 63108, 63139)

incorrect_df <- data.frame(
  id = c(1:3),
  zips = correct_zips_1
)

# test errors ------------------------------------------------

test_that("missing parameters trigger appropriate errors", {
  expect_error(zi_validate(),
               "Please provide a vector of data for validation.")
})

test_that("incorrectly specified parameters trigger appropriate errors", {
  expect_error(zi_validate(incorrect_df),
               "Please provide a vector of data, instead of a data frame, for validation.")
  expect_error(zi_validate(correct_zips_1, style = "ham"),
               "The 'style' value provided is invalid. Please select either 'zcta5' or 'zcta3'.")
  expect_error(zi_validate(correct_zips_1, verbose = "ham"),
               "The 'verbose' value provided is invalid. Please select either 'TRUE' or 'FALSE'.")
})

# test inputs ------------------------------------------------

test_that("correctly specified functions execute without error", {
  expect_error(zi_validate(correct_zips_1), NA)
  expect_error(zi_validate(correct_zips_1, verbose = TRUE), NA)
  expect_error(zi_validate(correct_zips_2, style = "zcta3"), NA)
})

# test outputs ------------------------------------------------

test_that("correctly specified functions produce expected classes", {
  expect_type(zi_validate(correct_zips_1), "logical")
  expect_s3_class(zi_validate(correct_zips_1, verbose = TRUE), "tbl_df")
})

result1 <- zi_validate(correct_zips_1)
result2 <- zi_validate(correct_zips_2, style = "zcta3")
result3 <- zi_validate(incorrect_zips_1)
result4 <- zi_validate(incorrect_zips_2)
result5 <- zi_validate(incorrect_zips_3, style = "zcta3")
result6 <- zi_validate(incorrect_zips_4)
result12 <- zi_validate(incorrect_zips_5)

test_that("correctly specified functions produce expected output", {
  expect_equal(result1, TRUE)
  expect_equal(result2, TRUE)
  expect_equal(result3, FALSE)
  expect_equal(result4, FALSE)
  expect_equal(result5, FALSE)
  expect_equal(result6, FALSE)
  expect_equal(result12, FALSE)
})

result7 <- zi_validate(incorrect_zips_1, verbose = TRUE)
result8 <- zi_validate(incorrect_zips_2, verbose = TRUE)
result9 <- zi_validate(incorrect_zips_3, verbose = TRUE, style = "zcta3")
result10 <- zi_validate(incorrect_zips_4, verbose = TRUE)
result11 <- zi_validate(incorrect_zips_5, verbose = TRUE)

test_that("correctly specified functions produce expected output", {
  expect_equal(result7$result, c(TRUE, FALSE, FALSE, TRUE))
  expect_equal(result8$result, c(TRUE, FALSE, TRUE, TRUE))
  expect_equal(result9$result, c(TRUE, FALSE, TRUE, TRUE))
  expect_equal(result10$result, c(TRUE, FALSE, TRUE, FALSE))
  expect_equal(result11$result, c(FALSE, TRUE, TRUE, TRUE))
})

Try the zippeR package in your browser

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

zippeR documentation built on Sept. 11, 2024, 8:56 p.m.