context("elevation: geonames_conn internal fxn")
test_that("geonames_conn internal fxn works", {
skip_on_cran()
skip_on_ci()
latitude <- c(50.01, 51.01)
longitude <- c(10.2, 11.2)
vcr::use_cassette("elevation_geonames_conn", {
aa <- geonames_conn("srtm3", latitude, longitude)
})
expect_is(aa, "numeric")
expect_equal(length(aa), 2)
})
test_that("geonames_conn fails well", {
skip_on_cran()
skip_on_ci()
expect_error(geonames_conn(), "argument \"elevation_model\" is missing")
expect_error(geonames_conn("foobar"), "argument \"latitude\" is missing")
expect_error(geonames_conn("foobar", 4), "argument \"longitude\" is missing")
vcr::use_cassette("elevation_geonames_conn_unauthorized", {
expect_error(geonames_conn("srtm3", 4, 5, "cheesemonkey"),
"Unauthorized", class = "error")
expect_error(geonames_conn("srtm3", "a", "a"), "invalid number")
})
})
context("elevation")
test_that("elevation", {
skip_on_cran()
skip_on_ci()
load("elevation_test_data.rda")
vcr::use_cassette("elevation", {
# returns the correct class
aa <- elevation(elevation_test_data)
# Pass in a vector of lat's and a vector of long's
bb <- elevation(latitude = elevation_test_data$decimalLatitude,
longitude = elevation_test_data$decimalLongitude)
# Pass in lat/long pairs in a single vector
pairs <- list(c(31.8496, -110.576060), c(29.15503, -103.59828))
cc <- elevation(latlong = pairs)
})
expect_is(aa, "data.frame")
expect_is(bb, "data.frame")
expect_is(cc, "data.frame")
expect_is(aa$elevation, "numeric")
expect_is(bb$elevation, "numeric")
expect_is(cc$elevation, "numeric")
})
context("elevation: different elevation models work")
test_that("elevation models work", {
skip_on_cran()
skip_on_ci()
load("elevation_test_data.rda")
eltest_small <- elevation_test_data[1:5, ]
vcr::use_cassette("elevation_models", {
# srtm3, srtm1, astergdem, or gtopo30
srtm3 <- elevation(eltest_small, elevation_model = "srtm3")
srtm1 <- elevation(eltest_small, elevation_model = "srtm1")
astergdem <- elevation(eltest_small, elevation_model = "astergdem")
gtopo30 <- elevation(eltest_small, elevation_model = "gtopo30")
})
expect_is(srtm3, "data.frame")
expect_is(srtm3$elevation_geonames, "numeric")
expect_is(srtm1, "data.frame")
expect_is(srtm1$elevation_geonames, "numeric")
expect_is(astergdem, "data.frame")
expect_is(astergdem$elevation_geonames, "numeric")
expect_is(gtopo30, "data.frame")
expect_is(gtopo30$elevation_geonames, "numeric")
})
context("elevation: fails well")
test_that("fails correctly", {
skip_on_cran()
skip_on_ci()
# input must be a data.frame
expect_error(elevation("aa"), "input must be a data.frame")
# no input returns empty data.frame
expect_error(elevation(), "one of input, lat & long, or latlong must be given")
# not complete cases
dat <- data.frame(decimalLatitude = c(6, NA),
decimalLongitude = c(120, -120))
expect_error(elevation(dat), "Input data has some missing values")
# impossible values
dat <- data.frame(decimalLatitude = c(6, 600),
decimalLongitude = c(120, -120))
expect_error(elevation(dat), "Input data has some impossible values")
# points at zero,zero
dat <- data.frame(decimalLatitude = c(0, 45), decimalLongitude = c(0, -120))
vcr::use_cassette("elevation_warning_zero_zero", {
expect_warning(elevation(dat), "Input data has some points at 0,0")
})
# invalid key
pairs <- list(c(31.8496, -110.576060), c(29.15503, -103.59828))
vcr::use_cassette("elevation_unauthorized", {
expect_error(elevation(latlong = pairs, username = "bad_user"),
"Unauthorized", class = "error")
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.