context("Locate NA function")
library(CleanR)
library(tibble)
toy_data_tbl <- tribble(
  ~x, ~y,  ~z,
  NA, 2,  3.6,
  "b", NA, 8.5,
  "c", NA, NA
)
toy_data_df <- as.data.frame(toy_data_tbl)
toy_all_na <- tibble(x = c(NA,NA,NA), y = c(NA,NA,NA), z = c(NA, NA, NA))
toy_no_na <- tibble(x = c(1,2,3,4), y = c(5,6,7,8))
test_that("Test that input data is a tbl or data.frame", {
  expect_error(locate_na("Input Data"), "Input data type is not of class data.frame.")
  expect_error(locate_na(c(1:10)), "Input data type is not of class data.frame.")
  expect_error(locate_na(list(1:3)), "Input data type is not of class data.frame.")
  expect_error(locate_na(TRUE), "Input data type is not of class data.frame.")
})
test_that("Test valid output format", {
  expect_is(locate_na(toy_data_tbl), "list")
  expect_is(locate_na(toy_data_df), "list")
})
test_that("Test for correct functionality of the function", {
  toy_result <- list(x=c(1), y=c(2,3), z=c(3))
  all_na_result <- list(x=c(1,2,3), y=c(1,2,3), z=c(1,2,3))
  no_na_result <- list()
  expect_equal(locate_na(toy_data_tbl), toy_result)
  expect_warning(locate_na(toy_all_na), "All values are missing.")
})
test_that("Test that output cannot have have more rows and columns than the original input data", {
  expect_lte(length(locate_na(toy_data_tbl)), dim(toy_data_tbl)[2])
  expect_lte(length(locate_na(toy_all_na)), dim(toy_all_na)[2])
  expect_equal(length(locate_na(toy_no_na)), 0)
  expect_lte(max(rapply(locate_na(toy_data_tbl),length)), dim(toy_data_tbl)[1])
  expect_lte(max(rapply(locate_na(toy_all_na),length)), dim(toy_all_na)[1])
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.