Nothing
# Test that the function correctly handles sf objects
test_that("redist_iso handles sf objects by dropping geometry", {
skip_on_cran()
test_sf <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March") %>%
mutate(longitude = runif(n(), min = -10, max = 40),
latitude = runif(n(), min = 35, max = 60)) %>%
st_as_sf(coords = c("longitude", "latitude"), crs = 4326)
df_redist <- datatrade_NorthAm$consumption_iso2 %>%
mutate(longitude = runif(n(), min = -10, max = 40),
latitude = runif(n(), min = 35, max = 60)) %>%
st_as_sf(coords = c("longitude", "latitude"), crs = 4326)
result <- redist_iso(data = test_sf,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value")
expect_s3_class(result, "data.frame")
expect_false("geometry" %in% names(result)) # Geometry should be dropped
})
###
test_that("redist_iso should return a data frame", {
skip_on_cran()
test_data <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March")
df_redist <- datatrade_NorthAm$consumption_iso2
expect_s3_class(suppressMessages(redist_iso(data=test_data,
iso_col="reporter",
values_col="value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value")),
"data.frame")
})
# data errors
test_that("data errors", {
skip_on_cran()
test_data <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March")
df_redist <- datatrade_NorthAm$consumption_iso2
expect_error(redist_iso(data=list()),
"Error: 'data' must be data.frame.")
expect_error(redist_iso(data=test_data,
iso_col = "iso_col",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value"),
paste(strwrap("The data frame 'data' must contain the columns specified
in 'iso_col' and 'values_col'."), collapse=" "))
test_data <- test_data %>%
mutate(value_ch = as.character(value),
value_neg = -value)
expect_error(redist_iso(data = test_data,
iso_col = "reporter",
values_col = "value_ch",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value"),
"Error: 'values_col' in 'data' must be numeric.")
expect_error(redist_iso(data=test_data,
iso_col = "reporter",
values_col = "value_neg",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value"),
paste(strwrap("Error: Invalid 'value' detected. Negative values
'values_col' in 'data' not interpretable as quantities."),
collapse=" "))
})
# redist_data errors
test_that("redist_data errors", {
skip_on_cran()
test_data <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March")
df_redist <- datatrade_NorthAm$consumption_iso2
expect_error(redist_iso(data=test_data,
iso_col = "reporter",
values_col = "value",
redist_data = list()),
"Error: 'redist_data' must be data.frame.")
expect_error(redist_iso(data=test_data,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso",
redist_values_col = "value"),
paste(strwrap("The data frame 'redist_data' must contain the columns
specified in 'redist_iso_col' and 'redist_values_col'."),
collapse=" "))
df_redist <- df_redist %>%
mutate(value_ch = as.character(value),
value_neg = -value)
expect_error(redist_iso(data = test_data,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value_ch"),
"Error: 'redist_values_col' in 'redist_data' must be numeric.")
expect_error(redist_iso(data=test_data,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value_neg"),
paste(strwrap("Error: Invalid 'value' detected. Negative values
'redist_values_col' in 'redist_data'."), collapse=" "))
})
# Test that invalid ISO codes trigger a warning
test_that("redist_iso warns for invalid ISO codes", {
skip_on_cran()
test_data <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March") %>%
mutate(reporter = ifelse(reporter == "BM", "INVALID", reporter))
df_redist <- datatrade_NorthAm$consumption_iso2 %>%
filter(!iso_3166_2%in%iso_3166_2[substr(iso_3166_2, 1, 2)=="BM"])
expect_warning(
redist_iso(data = test_data,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value"),
paste(strwrap("ISO 3166-2 code (subdivisions) has not been found in 'redist_data'
for the following ISO 3166-1 codes (country) of 'data'"),
collapse = " "), fixed=TRUE)
test_data <- datatrade_NorthAm$internal_production %>%
filter(time_period == "January-March") %>%
filter(reporter!="US")
df_redist <- datatrade_NorthAm$consumption_iso2 %>%
mutate(reporter = ifelse(iso_3166_2 == "US-WA", "INVALID", iso_3166_2))
expect_warning(
redist_iso(data = test_data,
iso_col = "reporter",
values_col = "value",
redist_data = df_redist,
redist_iso_col = "iso_3166_2",
redist_values_col = "value"),
paste(strwrap("ISO 3166-1 code (country) has not been found in 'data' for the
following ISO 3166-2 codes (subdivisions) of 'redist_data':"),
collapse=" "), fixed=TRUE)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.