# Check that .validate_years handles invalid years -----------------------------
test_that(".validate_years handles invalid years", {
skip_if_offline()
expect_error(.validate_years())
expect_error(.validate_years(years = "nineteen ninety two"))
expect_error(.validate_years(years = 1923))
expect_error(.validate_years(years = 1901 + as.POSIXlt(Sys.Date())$year))
expect_error(.validate_years(years = 0))
expect_error(.validate_years(years = -1))
})
# Check that .validate_years handles valid years -------------------------------
test_that(".validate_years handles valid years", {
skip_if_offline()
expect_error(.validate_years(years = 1929:2016), regexp = NA)
expect_error(.validate_years(years = 2016), regexp = NA)
})
# Check that invalid stations are handled --------------------------------------
test_that("invalid stations are handled", {
skip_if_offline()
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
stations <- isd_history
expect_error(.validate_station_id(
years = 2015,
station = "aaa-bbbbbb",
stations
))
})
# Check that station validation for years available on server works properly
test_that("Station validations are properly handled for years available", {
skip_if_offline()
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
stations <- isd_history
expect_warning(.validate_station_data_years(
station = "949999-00170",
stations,
years = 2010
))
})
test_that("Station validations are properly handled for years available", {
skip_if_offline()
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
expect_silent(.validate_station_data_years(
years = 2010,
station = "955510-99999",
isd_history = isd_history
))
})
# Check missing days in non-leap years -----------------------------------------
test_that("missing days check allows stations with permissible days missing,
non-leap year", {
skip_if_offline()
max_missing <- 5
td <- tempdir()
just_right_2015 <-
data.frame(c(rep(12, 360)), c(rep("X", 360)))
too_short_2015 <-
data.frame(c(rep(12, 300)), c(rep("X", 300)))
df_list <- list(just_right_2015, too_short_2015)
dir.create(path = file.path(td, "2015"))
filenames <- c("just_right0", "too_short00")
sapply(
seq_len(length(df_list)),
function(x) {
write.csv(df_list[[x]],
file = paste0(
td, "/2015/", filenames[x],
".csv"
)
)
}
)
GSOD_list <-
list.files(
path = file.path(td, "2015"),
pattern = ".csv$",
full.names = TRUE
)
if (!is.null(max_missing)) {
GSOD_list_filtered <- .validate_missing_days(
max_missing,
GSOD_list
)
}
expect_length(GSOD_list, 2)
expect_match(
basename(GSOD_list_filtered),
"just_right0.csv"
)
rm_files <-
list.files(file.path(td, "2015"), full.names = TRUE)
file.remove(rm_files)
file.remove(file.path(td, "2015"))
})
# Check missing days in leap years ---------------------------------------------
test_that("missing days check allows stations with permissible days missing,
leap year", {
skip_if_offline()
max_missing <- 5
td <- tempdir()
just_right_2016 <-
data.frame(c(rep(12, 361)), c(rep("X", 361)))
too_short_2016 <-
data.frame(c(rep(12, 300)), c(rep("X", 300)))
df_list <- list(just_right_2016, too_short_2016)
dir.create(path = file.path(td, "2016"))
filenames <- c("just_right0", "too_short00")
sapply(
seq_len(length(df_list)),
function(x) {
write.csv(df_list[[x]],
file = paste0(
td, "/2016/", filenames[x],
".csv"
)
)
}
)
GSOD_list <-
list.files(
path = file.path(td, "2016"),
pattern = ".csv$",
full.names = TRUE
)
if (!is.null(max_missing)) {
GSOD_list_filtered <- .validate_missing_days(
max_missing,
GSOD_list
)
}
expect_length(GSOD_list, 2)
expect_match(basename(GSOD_list_filtered), "just_right0.csv")
rm_files <-
list.files(file.path(td, "2016"), full.names = TRUE)
file.remove(rm_files)
file.remove(file.path(td, "2016"))
})
# Check that max_missing only accepts positive values --------------------------
test_that("The 'max_missing' parameter will not accept NA values", {
skip_if_offline()
expect_error(get_GSOD(years = 2010, max_missing = NA))
})
test_that("The 'max_missing' parameter will not accept values < 1", {
skip_if_offline()
expect_error(get_GSOD(years = 2010, max_missing = 0.1))
})
# Check validate country returns a two letter code -----------------------------
test_that("Check validate country returns a two letter code", {
skip_if_offline()
# Load country list
# CRAN NOTE avoidance
isd_history <- NULL
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
country <- "Philippines"
Philippines <- .validate_country(country, isd_history)
expect_match(Philippines, "RP")
country <- "PHL"
PHL <- .validate_country(country, isd_history)
expect_match(PHL, "RP")
country <- "PH"
PH <- .validate_country(country, isd_history)
expect_match(PH, "RP")
})
# Check validate country returns an error on invalid entry----------------------
test_that("Check validate country returns an error on invalid entry when
mispelled", {
skip_if_offline()
isd_history <- NULL
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
country <- "Philipines"
expect_error(.validate_country(country, isd_history))
})
test_that(
"Check validate country returns an error on invalid entry when two
two characters are used that are not in the list",
{
skip_if_offline()
isd_history <- NULL
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
country <- "RZ"
expect_error(.validate_country(country, isd_history))
}
)
test_that(
"Check validate country returns an error on invalid entry when two
three characters are used that are not in the list",
{
skip_if_offline()
isd_history <- NULL
load(system.file("extdata", "isd_history.rda", package = "GSODR"))
country <- "RPS"
expect_error(.validate_country(country, isd_history))
}
)
# Check that max_missing is not allowed for current year -----------------------
test_that("max_missing is not allowed for current year", {
skip_if_offline()
years <- 1983:format(Sys.Date(), "%Y")
expect_error(get_GSOD(years = years, max_missing = 5))
})
# Check that only unique stations returned, tempdir() is cleaned up on exit ----
test_that("unique stations are returned, tempdir() is cleaned up on exit", {
skip_if_offline()
a <- get_GSOD(years = 2010, station = "489300-99999")
b <- get_GSOD(years = 2010, station = "489260-99999")
expect_false(isTRUE(list.files(
tempdir(),
pattern = ".csv$",
full.names = TRUE
)))
expect_equal(length(unique(b$STNID)), 1)
})
# Check that agroclimatology is returned when requested ------------------------
test_that("agroclimatology data is returned as requested", {
skip_if_offline()
a <- get_GSOD(years = 1929, agroclimatology = TRUE)
expect_lt(max(a$LATITUDE), 60)
expect_gt(min(a$LATITUDE), -60)
})
# Check that agroclimatology and station cannot be specified concurrently ------
test_that("agroclimatology and station cannot be specified concurrently", {
skip_if_offline()
expect_error(get_GSOD(
years = 2010,
agroclimatology = TRUE,
station = "489300-99999"
))
})
# Check that when specifying a country only that country is returned -----------
test_that("only specified country is returned using FIPS and ISO codes", {
skip_if_offline()
a <- get_GSOD(years = 1929, country = "UK")
expect_equal(a$CTRY[1], "UK")
})
test_that("only specified country is returned using 2 letter ISO codes", {
skip_if_offline()
a <- get_GSOD(years = 1930, country = "GB")
expect_equal(a$CTRY[1], "UK")
})
test_that("only specified country is returned using 3 letter ISO codes", {
skip_if_offline()
a <- get_GSOD(years = 1931, country = "GBR")
expect_equal(a$CTRY[1], "UK")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.