context('Usage of a custom dictionary')

test_that('custom dictionary without regex', {
    test_func <- function(iso3c_codes) countrycode(iso3c_codes, 'iso3c', 'country.name.en', custom_dict = codelist, warn = FALSE)
    expect_equal(test_func('CAN'), 'Canada')
    expect_equal(test_func(c('USA', 'CAN')), c('United States', 'Canada'))
    expect_equal(test_func(c('USA', 'CAN', 'XXX')), c('United States', 'Canada', NA))
})

test_that('custom dictionary with regex', {
    test_func <- function(countrynames) countrycode(countrynames, 'country.name.en.regex', 'iso3c', custom_dict = codelist, origin_regex = TRUE, warn = FALSE)
    expect_equal(test_func('West Germany'), 'DEU')
    expect_equal(test_func(c('U.S.A.', 'West Germany')), c('USA', 'DEU'))
    expect_equal(test_func(c('U.S.A.', 'West Germany', 'XXX')), c('USA', 'DEU', NA))
})

test_that('canadian provinces test', {
    dict <- data.frame('regex' = c('qu.bec', 'alberta', 'british.columbia'),
                       'abbreviation' = c('QC', 'AB', 'BC'),
                       'province' = c('Quebec', 'Alberta', 'British Columbia'),
                       stringsAsFactors = FALSE)
    expect_equal(countrycode('QuÃ©bec', 'regex', 'abbreviation', custom_dict = dict, origin_regex = TRUE), 'QC')
    expect_equal(countrycode(c('Alberta', 'British Columbia'), 'regex', 'abbreviation', custom_dict = dict, origin_regex = TRUE), c('AB', 'BC'))
    expect_equal(countrycode('QC', 'abbreviation', 'province', custom_dict = dict), 'Quebec')
})
