tests/testthat/test-internal.R

context("internals not yet caught")
library(sf)
library(terra)
library(elevatr)
data("pt_df")
data("sf_big")
data("lake")
skip_on_cran()
#skip_on_os("solaris")
ll_prj  <- 4326
aea_prj <- 5072

sf_sm <- st_as_sf(pt_df, coords = c("x", "y"), crs = ll_prj)
sf_sm_prj <- st_transform(sf_sm, crs = aea_prj) 
bad_sf <- st_as_sf(data.frame(x = 1000, y = 1000), coords = c("x", "y"), 
                   crs = ll_prj)
rast <- terra::rasterize(st_coordinates(sf_sm),terra::rast(sf_sm))
sf_sm_na <- sf_sm
st_crs(sf_sm_na) <- NA
rast_na <- rast
crs(rast_na) <- NA

mt_wash <- data.frame(x = -71.3036, y = 44.2700)
mt_mans <- data.frame(x = -72.8145, y = 44.5438)
mts <- rbind(mt_wash,mt_mans)
mts$name <- c("Mount Washington", "Mount Mansfield")

test_that("data frame with more extra columns work", {
  
  mts_with_names_and_elevation <- get_elev_point(mts, ll_prj)
  expect_true("name" %in% names(mts_with_names_and_elevation))
})

test_that("proj_expand works",{
  
  mans_sf <- st_as_sf(data.frame(x = -72.8145, y = 44.5438), 
                      coords = c("x","y"),
                      crs = ll_prj)
  mans <- get_elev_raster(locations =  mans_sf, z = 6)
  mans_exp <- get_elev_raster(locations = mans_sf, z = 6, expand = 2)
  
  rast_elev <- get_elev_raster(locations = rast, z = 5)
  rast_elev_exp <- get_elev_raster(locations = rast, z = 5, exp = 5)
  expect_gt(ncell(mans_exp),ncell(mans))
  expect_gt(ncell(rast_elev_exp), ncell(rast_elev))
  
  origin_sf <- st_as_sf(data.frame(x = 0, y = 0), coords = c("x", "y"),
                        crs = ll_prj)
  origins <- get_elev_raster(locations = origin_sf, z = 6)
  #expect_is(origins, "SpatRaster")
  expect_is(origins, "RasterLayer")
})

test_that("loc_check errors correctly", {
  empty_rast <- rast(nrow = 1, ncol =1)
  expect_error(get_elev_point(locations = pt_df), 
               "Please supply a valid sf crs via locations or prj.")
  expect_error(get_elev_point(locations = rast_na),
               "Please supply a valid sf crs via locations or prj.")
  expect_error(get_elev_point(locations = sf_sm_na),
               "Please supply an sf object with a valid crs.")
})

test_that("Z of 1 or 0 works in get_tilexy",{

  sf_sm_1 <- get_elev_raster(sf_sm, z = 1, clip = "bbox")
  sf_sm_0 <- get_elev_raster(sf_sm, z = 0, clip = "bbox")
  
  expect_gt(max(res(sf_sm_1)), 0.27)
  expect_gt(max(res(sf_sm_0)), 0.54)
})
jhollist/elevatr documentation built on Feb. 4, 2024, 12:01 a.m.