tests/testthat/test-encodefrom.R

context('encodefrom')

## -----------------------------------------------------------------------------
## PRELIM
## -----------------------------------------------------------------------------

## set up data
df <- tibble::tibble(state = c('Texas','Louisiana','Massachusetts',
                               'Florida','Oregon','Montana',
                               'Washington','Arkansas','Tennessee',
                               'Mississippi','Utah','Alabama',
                               'Kentucky','Maine','Michigan',
                               'California','Illinois','Delaware',
                               'Idaho','North Carolina','Nebraska',
                               'Maryland','Virginia','Pennsylvania',
                               'Rhode Island','South Carolina','Iowa',
                               'New Hampshire','Kansas','Nevada',
                               'South Dakota','Colorado','Arizona',
                               'Alaska','New York','Oklahoma',
                               'Wisconsin','Wyoming','Connecticut',
                               'Missouri','Minnesota','Ohio',
                               'Georgia','New Jersey','Vermont',
                               'District of Columbia','North Dakota',
                               'New Mexico','West Virginia','Indiana',
                               'Hawaii'),
                         y = seq(1:51))

crosswalk_file <- system.file('extdata', 'stcrosswalk.rda',
                              package = 'crosswalkr')

## encode vector
vec <- encodefrom(df, state, crosswalk_file, stname, stfips, stabbr)

## -----------------------------------------------------------------------------
## TESTS
## -----------------------------------------------------------------------------

test_that('Not proper labelled class', {
    ## skip until new haven is out
    ## skip_on_cran()
    ## skip_on_travis()
    expect_is(vec, 'haven_labelled')

})

test_that('Failed to properly label vector', {

    lab_names <- c('AL','AK','AZ','AR','CA','CO','CT','DE','DC','FL','GA','HI',
                   'ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN',
                   'MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH',
                   'OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA',
                   'WV','WI','WY')
    lab_vals <- c(1:2,4:6,8:13,15:42,44:51,53:56)
    names(lab_vals) <- lab_names

    expect_equal(names(attr(vec, 'labels', exact = TRUE)), lab_names)
    expect_equal(attr(vec, 'labels', exact = TRUE), lab_vals)

})

test_that('Failed to assign proper values', {

    act_vals <- c(48L,22L,25L,12L,41L,30L,53L,5L,47L,28L,49L,1L,
                  21L,23L,26L,6L,17L,10L,16L,37L,31L,24L,51L,42L,
                  44L,45L,19L,33L,20L,32L,46L,8L,4L,2L,36L,40L,
                  55L,56L,9L,29L,27L,39L,13L,34L,50L,11L,38L,35L,
                  54L,18L,15L)

    expect_equal(haven::zap_labels(vec), act_vals)

})

## encode vector (factor)
vec <- encodefrom(df, state, crosswalk_file, stname, stfips,
                  stabbr, ignore_tibble = TRUE)

test_that('Not proper factor class', {

    expect_is(vec, 'factor')

})

test_that('Failed to properly label factor', {

    lab_names <- c('AL','AK','AZ','AR','CA','CO','CT','DE','DC','FL','GA','HI',
                   'ID','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN',
                   'MS','MO','MT','NE','NV','NH','NJ','NM','NY','NC','ND','OH',
                   'OK','OR','PA','RI','SC','SD','TN','TX','UT','VT','VA','WA',
                   'WV','WI','WY')
    lab_vals <- as.character(c(1:2,4:6,8:13,15:42,44:51,53:56))
    names(lab_vals) <- lab_names

    expect_equal(levels(vec), lab_names)
    expect_equal(labels(vec), as.character(1:51))

})

test_that('Failed to assign proper values', {

    act_vals <- c('TX','LA','MA','FL','OR','MT','WA','AR','TN','MS','UT',
                  'AL','KY','ME','MI','CA','IL','DE','ID','NC','NE','MD',
                  'VA','PA','RI','SC','IA','NH','KS','NV','SD','CO','AZ',
                  'AK','NY','OK','WI','WY','CT','MO','MN','OH','GA','NJ',
                  'VT','DC','ND','NM','WV','IN','HI')

    expect_equal(as.character(vec), act_vals)

})

Try the crosswalkr package in your browser

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

crosswalkr documentation built on Jan. 8, 2020, 5:07 p.m.