context("Test recode_if()") test_that("recode_if() works as expected", { x <- labelled(c(1, 2, 2, 9), c(yes = 1, no = 2)) y <- x %>% recode_if(x == 9, NA) expect_equal( y, labelled(c(1, 2, 2, NA), c(yes = 1, no = 2)) ) y <- x %>% recode_if(1:4 < 3, 11:14) expect_equal( y, labelled(c(11, 12, 2, 9), c(yes = 1, no = 2)) ) x <- c("A", "B", "C") expect_equal( x %>% recode_if(c(TRUE, FALSE, NA), "Z"), c("Z", "B", "C") ) expect_equal( x %>% recode_if(c(TRUE, FALSE, NA), 0), c("0", "B", "C") ) }) test_that("recode_if() preserve value and variable labels", { x <- labelled_spss(c(1, 2, 2, 8, 9), c(yes = 1, no = 2), na_values = 9) var_label(x) <- "variable label" y <- x %>% recode_if(unclass(x) == 8, NA) expect_equal(var_label(x), var_label(y)) expect_equal(val_labels(x), val_labels(y)) expect_equal(na_values(x), na_values(y)) expect_equal(na_range(x), na_range(y)) }) test_that("recode_if() checks", { expect_error( 1:3 %>% recode_if(c(TRUE, FALSE, NA), 9L), NA ) expect_error( 1:3 %>% recode_if(c(TRUE, FALSE, NA), 11:13), NA ) expect_error( 1:3 %>% recode_if(c(TRUE, FALSE, "NA"), 9) ) expect_error( 1:3 %>% recode_if(c(TRUE, FALSE), 9) ) expect_error( 1:3 %>% recode_if(c(TRUE, FALSE, NA), 10:11) ) expect_warning( 1:3 %>% recode_if(c(TRUE, FALSE, NA), "char") ) expect_warning( 1:3 %>% recode_if(c(TRUE, FALSE, NA), 9) ) })