tests/testthat/test-str_coalesce.R

test_that("normal tests", {
  # Normal examples
  expect_equal(str_coalesce("", "hello"), "hello")
  expect_equal(str_coalesce("", NA, "goodbye"), "goodbye")

  # '' always preferred
  expect_equal(str_coalesce("", NA), "")
  expect_equal(str_coalesce(NA, ""), "")

  # Unless there are only NAs
  expect_identical(str_coalesce(NA, NA), NA_character_)

  # `str_coalesce` is vectorised

  with_local_seed({
    x <- val_insert(letters, "", n = 10)
    y <- val_insert(LETTERS, "", n = 10)
  }, 42)

  expect_equal(str_coalesce(x, y), ifelse(x != "" & !is.na(x), x, y))

  expect_equal(
    str_coalesce(NULL, letters, letters, NULL, NULL, letters, NULL, NULL),
    letters
  )
})

Try the cheapr package in your browser

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

cheapr documentation built on June 8, 2025, 11:35 a.m.