tests/testthat/test-missing.R

context("test-missing")

#
## recode_to_chr_na
#
test_that("recode_to_chr_na: typical use case", {
  expect_identical(recode_to_chr_na('foo'), 'foo')
  expect_identical(recode_to_chr_na('NR'), NA_character_)
  expect_identical(recode_to_chr_na('nr'), NA_character_)
  expect_identical(recode_to_chr_na('NA'), NA_character_)
  expect_identical(recode_to_chr_na('na'), NA_character_)
  expect_identical(recode_to_chr_na(''), NA_character_)
  expect_identical(recode_to_chr_na(' '), NA_character_)
  expect_identical(recode_to_chr_na('  '), NA_character_)
  expect_identical(recode_to_chr_na('', recode_empty_string = FALSE), '')
  expect_identical(recode_to_chr_na(' ', recode_empty_string = FALSE), ' ')
  expect_identical(recode_to_chr_na('  ', recode_empty_string = FALSE), '  ')
  expect_identical(recode_to_chr_na(character(), recode_empty_string = FALSE), character())
  expect_identical(recode_to_chr_na(character(), recode_empty_string = TRUE), character())
})

test_that("recode_to_chr_na: exceptions", {
  expect_error(recode_to_chr_na(1L), 'chr_vec is expected to be a character!')
  expect_error(recode_to_chr_na('foo', from = 1L), 'from is expected to be a character!')
})

#
## recode_missing
#
test_that("recode_missing: NULL", {
  expect_identical(recode_missing(NULL, type = 'chr'), NA_character_)
  expect_identical(recode_missing(NULL, type = 'int'), NA_integer_)
  expect_identical(recode_missing(NULL, type = 'dbl'), NA_real_)
  expect_identical(recode_missing(NULL, type = 'lgl'), NA)
})
test_that("recode_missing: input chr typical use case", {
  missing_vec <- c('nr', 'NR', 'NA', 'na', '', ' ', '  ', NA_character_)
  expect_identical(recode_missing(missing_vec), rep(NA_character_, 8L))
  expect_identical(recode_missing(c('', ' ', '  '), recode_empty_string = FALSE), c('', ' ', '  '))
  expect_identical(recode_missing(c('foo', 'bar')), c('foo', 'bar'))

  expect_identical(recode_missing(missing_vec, type = 'int'), rep(NA_integer_, 8L))
  expect_identical(recode_missing(c('', ' ', '  '), type = 'int', recode_empty_string = FALSE),
                   c(NA_integer_, NA_integer_, NA_integer_))
  expect_identical(recode_missing(c('foo', 'bar'), type = 'int'), c(NA_integer_, NA_integer_))

  expect_identical(recode_missing(missing_vec, type = 'dbl'), rep(NA_real_, 8L))
  expect_identical(recode_missing(c('', ' ', '  '), type = 'dbl', recode_empty_string = FALSE),
                   c(NA_real_, NA_real_, NA_real_))
  expect_identical(recode_missing(c('foo', 'bar'), type = 'dbl'), c(NA_real_, NA_real_))

  expect_identical(recode_missing(missing_vec, type = 'lgl'), rep(NA, 8L))
  expect_identical(recode_missing(c('', ' ', '  '), type = 'lgl', recode_empty_string = FALSE), c(NA, NA, NA))
  expect_identical(recode_missing(c('foo', 'bar'), type = 'lgl'), c(NA, NA))

  expect_identical(recode_missing(character(), type = 'int'), integer())
  expect_identical(recode_missing(character(), type = 'dbl'), double())
  expect_identical(recode_missing(character(), type = 'lgl'), logical())
  expect_identical(recode_missing(character(), type = 'chr'), character())
})
test_that("recode_missing: input int typical use case", {
  vec <- c(1L, 2L, NA_integer_)
  expect_identical(recode_missing(vec, type = 'int'), vec)
  expect_identical(recode_missing(vec, type = 'dbl'), c(1, 2, NA_real_))
  expect_identical(recode_missing(vec, type = 'lgl'), c(TRUE, TRUE, NA))
  expect_identical(recode_missing(vec, type = 'chr'), c('1', '2', NA_character_))

  expect_identical(recode_missing(integer(), type = 'int'), integer())
  expect_identical(recode_missing(integer(), type = 'dbl'), double())
  expect_identical(recode_missing(integer(), type = 'lgl'), logical())
  expect_identical(recode_missing(integer(), type = 'chr'), character())
})
test_that("recode_missing: input dbl typical use case", {
  vec <- c(1.0, 3.14, NA_real_)
  expect_identical(recode_missing(vec, type = 'int'), c(1L, 3L, NA_integer_))
  expect_identical(recode_missing(vec, type = 'dbl'), vec)
  expect_identical(recode_missing(vec, type = 'lgl'), c(TRUE, TRUE, NA))
  expect_identical(recode_missing(vec, type = 'chr'), c('1', '3.14', NA_character_))

  expect_identical(recode_missing(double(), type = 'int'), integer())
  expect_identical(recode_missing(double(), type = 'dbl'), double())
  expect_identical(recode_missing(double(), type = 'lgl'), logical())
  expect_identical(recode_missing(double(), type = 'chr'), character())
})
test_that("recode_missing: input lgl typical use case", {
  vec <- c(TRUE, FALSE, NA)
  expect_identical(recode_missing(vec, type = 'int'), c(1L, 0L, NA_integer_))
  expect_identical(recode_missing(vec, type = 'dbl'), c(1, 0, NA_real_))
  expect_identical(recode_missing(vec, type = 'lgl'), vec)
  expect_identical(recode_missing(vec, type = 'chr'), c('TRUE', 'FALSE', NA_character_))

  expect_identical(recode_missing(logical(), type = 'int'), integer())
  expect_identical(recode_missing(logical(), type = 'dbl'), double())
  expect_identical(recode_missing(logical(), type = 'lgl'), logical())
  expect_identical(recode_missing(logical(), type = 'chr'), character())
})

test_that("recode_missing: exceptions", {
  expect_error(recode_missing(list()), 'x must be NULL, character, logical, integer or double.')
  expect_error(recode_missing('foo', type = 'wth?'),
               'type must be of one of these types: chr, dbl, int or lgl.')
  expect_error(recode_missing('foo', from = 1L), 'from must be character.')
})

Try the gwasrapidd package in your browser

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

gwasrapidd documentation built on Dec. 28, 2022, 2:16 a.m.