test_that("galah_radius returns list from lon/lat/radius arguments", {
lon <- 151.3174
lat <- -33.66741
radius = 3
radius_object <- galah_radius(lon = lon,
lat = lat,
radius = radius)
expected_object <- list(lat = -33.66741,
lon = 151.3174,
radius = 3)
expect_equal(radius_object, expected_object)
})
test_that("galah_radius assigns default radius when missing argument", {
lon <- 151.3174
lat <- -33.66741
radius_object <- expect_warning(galah_radius(lon = lon, lat = lat),
"No radius value specified.")
expected_object <- list(lat = -33.66741,
lon = 151.3174,
radius = 10) # default is 10 km
expect_equal(radius_object, expected_object)
})
test_that("galah_radius returns radius for sf_POINT object", {
point <- sf::st_sfc(sf::st_point(c(-33.66741, 151.3174)),
crs = 4326)
expected_object <- list(lat = -33.66741,
lon = 151.3174,
radius = 3)
expect_equal(galah_radius(point, radius = 3), expected_object)
})
test_that("galah_radius errors when more complex sf objects are passed", {
poly_path <- test_path("testdata", "act_state_polygon_shp", "ACT_STATE_POLYGON_shp.shp")
shapefile <- sf::st_read(poly_path, quiet = TRUE)
wkt <- "POLYGON((142.36228 -29.00703,142.74131 -29.00703,142.74131 -29.39064,142.36228 -29.39064,142.36228 -29.00703))"
obj_sf <- wkt |> sf::st_as_sfc()
expect_error(galah_radius(shapefile, radius = 3), "Invalid spatial object supplied")
expect_error(galah_radius(obj_sf, radius = 3), "Invalid spatial object supplied")
})
test_that("galah_radius detects inputs", {
lon_char <- "wrongo"
lon_list <- list(lon = 151)
lon_df <- data.frame(lon = 151)
lat <- -33.66741
radius = 3
expect_error(galah_radius(lon = lon_char,
lat = lat,
radius = radius), "Invalid class detected")
expect_error(galah_radius(lon = lon_list,
lat = lat,
radius = radius), "Invalid class detected")
expect_error(galah_radius(lon = lon_df,
lat = lat,
radius = radius), "Invalid class detected")
})
test_that("galah_radius detects impossible coordinates", {
lon1 <- 182
lon2 <- -195
lat1 <- -91
lat2 = 109
expect_error(galah_radius(lon = lon1,
lat = -32,
radius = 2),
"Point location outside of possible range")
expect_error(galah_radius(lon = lon2,
lat = -32,
radius = 2),
"Point location outside of possible range")
expect_error(galah_radius(lon = 151,
lat = lat1,
radius = 2),
"Point location outside of possible range")
expect_error(galah_radius(lon = 151,
lat = lat2,
radius = 2),
"Point location outside of possible range")
})
test_that("galah_radius messages when radius is very large", {
radius <- 1600
expect_message(
galah_radius(lon = 151, lat = -32, radius = radius),
"Radius is larger than the area of Australia")
})
test_that("galah_radius only uses first arguments supplied to lon/lat/radius", {
multiple_lon <- c(151, 152, 153)
multiple_lat <- c(-31, -32, -33)
multiple_radius <- c(3, 2, 1)
radius <- 3
expected_object <- list(lat = -31,
lon = 151,
radius = 3)
expect_warning(galah_radius(lon = multiple_lon,
lat = -31,
radius = radius),
"More than 1 spatial")
expect_warning(galah_radius(lon = 151,
lat = multiple_lat,
radius = radius),
"More than 1 spatial")
expect_warning(galah_radius(lon = 151,
lat = -31,
radius = multiple_radius),
"More than 1 radius")
expect_equal(
suppressWarnings(
galah_radius(lon = multiple_lon, lat = -31, radius = radius)$lon),
expected_object$lon
)
expect_equal(
suppressWarnings(
galah_radius(lon = 151, lat = multiple_lat, radius = radius)$lat),
expected_object$lat
)
expect_equal(
suppressWarnings(
galah_radius(lon = 151, lat = -31, radius = multiple_radius)$radius),
expected_object$radius
)
})
# TODO: (after implementing) galah_radius uses only first coordinates of tibble with many coordinates
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.