tests/testthat/test-empty.R

test_that("can compact missing elements", {
  x <- list(NULL, 1, NULL)
  expect_identical(list_drop_empty(x), list(1))
})

test_that("can compact empty elements", {
  x <- list(1, NULL, integer(), NULL)
  expect_identical(list_drop_empty(x), list(1))
})

test_that("emptyness works with data frames", {
  x <- data_frame()
  y <- data_frame(.size = 2L)

  lst <- list(x, y)

  expect_identical(list_drop_empty(lst), list(y))
})

test_that("emptyness works with rcrd types", {
  x <- new_rcrd(list(foo = integer(), bar = numeric()))
  y <- new_rcrd(list(foo = 1L, bar = 1))

  lst <- list(x, y)

  expect_identical(list_drop_empty(lst), list(y))
})

test_that("works with empty lists", {
  expect_identical(list_drop_empty(list()), list())
})

test_that("retains list type", {
  x <- list_of(NULL, integer())
  expect_identical(list_drop_empty(x), list_of(.ptype = integer()))
})

test_that("validates `x`", {
  expect_error(list_drop_empty(1), "must be a list")
  expect_error(list_drop_empty(data_frame()), "must be a list")
})

Try the vctrs package in your browser

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

vctrs documentation built on Oct. 13, 2023, 1:05 a.m.