tests/testthat/test-search_omv.R

test_that("search_omv works", {
    tmpDF <- jmvReadWrite::bfi_sample
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = "A64365", whlTrm = FALSE), list(ID = "185", ID2 = "168"))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = "a64365", whlTrm = FALSE), setNames(list(), character(0)))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = "a64365", whlTrm = FALSE, ignCse = TRUE), list(ID = "185", ID2 = "168"))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = 24, whlTrm = TRUE), list(age = c("2", "6", "11", "12", "61", "75", "77", "99", "109", "169", "197", "200")))
    expect_equal(vapply(search_omv(dtaInp = jmvReadWrite::bfi_sample, srcTrm = 24, whlTrm = FALSE), length, integer(1)), setNames(c(13, 12, 60, 8), c("ID", "age", "AD", "ID2")))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = NA,  whlTrm = TRUE),  list(A1 = c("16", "17", "253", "254")))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = NA,  whlTrm = FALSE), list(A1 = c("16", "17", "253", "254")))
    set.seed(1)
    tmpDF[sample(254, 10), "AD"] <- Inf
    tmpDF[sample(254, 10), "AD"] <- -Inf
    # whlTrm = TRUE only finds Inf, FALSE finds both Inf and -Inf
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = Inf, whlTrm = TRUE),  list(AD = c("14", "43", "68", "129", "162", "167", "187", "210", "215", "249")))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = Inf, whlTrm = FALSE), list(AD = c("7", "14", "21", "43", "51", "68", "73", "74", "85", "106", "129",
      "162", "167", "182", "187", "210", "215", "225", "238", "249")))
    # NA's are in another column and shouldn't be affected
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = NA,  whlTrm = TRUE),  list(A1 = c("16", "17", "253", "254")))
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = NA,  whlTrm = FALSE), list(A1 = c("16", "17", "253", "254")))
    for (i in sample(33, 10)) tmpDF[sample(254, 2), i] <-  NA
    expect_equal(search_omv(dtaInp = tmpDF, srcTrm = NA,  whlTrm = TRUE),  list(A1 = c("16", "17", "44", "121", "253", "254"), A4 = c("33", "84"), C3 = c("70", "163"), C4 = c("70", "87"),
      E3 = c("111", "166"), E4 = c("89", "126"), N5 = c("172", "207"), O4 = c("42", "74"), gender = c("20", "250"), AG = c("148", "156")))

    expect_error(search_omv(fleInp = tmpDF),                       regexp = "^Calling search_omv requires the parameter srcTrm \\(a character vector with length 1\\)\\.")
    expect_error(search_omv(fleInp = tmpDF, srcTrm = c("1", "2")), regexp = "^Calling search_omv requires the parameter srcTrm \\(a character vector with length 1\\)\\.")
    expect_error(search_omv(fleInp = tmpDF, srcTrm = "A64365"),    regexp = "^Please use the argument dtaInp instead of fleInp\\.")
})

Try the jmvReadWrite package in your browser

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

jmvReadWrite documentation built on April 3, 2025, 6:51 p.m.