tests/testthat/test-stat_spatraster.R

test_that("Minimal checks for stat_spatraster 1lyr CRS", {
  suppressWarnings(library(ggplot2))
  suppressWarnings(library(terra))

  #  Import also vector
  f <- system.file("extdata/cyl_elev.tif", package = "tidyterra")
  r <- rast(f)

  f_v <- system.file("extdata/cyl.gpkg", package = "tidyterra")
  v <- vect(f_v)
  v_sf <- sf::st_as_sf(v)

  # Errors
  expect_error(
    ggplot(r) +
      stat_spatraster()
  )
  expect_snapshot(
    ggplot() +
      stat_spatraster(data = v),
    error = TRUE
  )
  expect_snapshot(
    ggplot() +
      stat_spatraster(data = 1:3),
    error = TRUE
  )

  # test with vdiffr
  skip_on_cran()
  skip_if_not_installed("vdiffr")


  # Regular plot

  p <- ggplot() +
    stat_spatraster(data = r)
  vdiffr::expect_doppelganger("crslyr1_01: regular", p)


  # Using facets
  vdiffr::expect_doppelganger(
    "crslyr1_02: w/facets",
    p +
      facet_wrap(~lyr)
  )

  # Using aes
  expect_warning(ggplot() +
    stat_spatraster(data = r, aes(
      fill = elevation_m,
      color = "red"
    )))

  p_aes <- ggplot() +
    stat_spatraster(data = r, aes(fill = elevation_m))

  vdiffr::expect_doppelganger("crslyr1_03: w/aes", p_aes)

  # change geom
  p <- ggplot() +
    stat_spatraster(data = r, geom = "point", aes(fill = elevation_m))
  expect_error(ggplot_build(p))

  p <- ggplot() +
    stat_spatraster(
      data = r, geom = "point", aes(color = after_stat(value)),
      maxcell = 2500
    )

  vdiffr::expect_doppelganger("crslyr1_04: points", p)

  p <- ggplot() +
    stat_spatraster(
      data = r, geom = "text",
      aes(label = after_stat(round(value))),
      check_overlap = TRUE,
      maxcell = 25
    )

  vdiffr::expect_doppelganger("crslyr1_05: text", p)
})

test_that("Minimal checks for stat_spatraster 1lyr noCRS", {
  suppressWarnings(library(ggplot2))
  suppressWarnings(library(terra))

  #  Import also vector
  f <- system.file("extdata/cyl_elev.tif", package = "tidyterra")
  r <- rast(f)

  f_v <- system.file("extdata/cyl.gpkg", package = "tidyterra")
  v <- vect(f_v)
  v_sf <- sf::st_as_sf(v)
  raster_crs <- pull_crs(r)

  terra::crs(r) <- NA

  # test with vdiffr
  skip_on_cran()
  skip_if_not_installed("vdiffr")


  # Regular plot

  p <- ggplot() +
    stat_spatraster(data = r)
  vdiffr::expect_doppelganger("nocrslyr1_01: regular", p)


  # Using facets
  vdiffr::expect_doppelganger(
    "nocrslyr1_02: w/facets",
    p +
      facet_wrap(~lyr)
  )

  # Using aes
  expect_warning(ggplot() +
    stat_spatraster(data = r, aes(
      fill = elevation_m,
      color = "red"
    )))

  p_aes <- ggplot() +
    stat_spatraster(data = r, aes(fill = elevation_m))

  vdiffr::expect_doppelganger("nocrslyr1_03: w/aes", p_aes)

  # change geom
  p <- ggplot() +
    stat_spatraster(data = r, geom = "point", aes(fill = elevation_m))
  expect_error(ggplot_build(p))

  p <- ggplot() +
    stat_spatraster(
      data = r, geom = "point", aes(color = after_stat(value)),
      maxcell = 2500
    )

  vdiffr::expect_doppelganger("nocrslyr1_04: points", p)

  p <- ggplot() +
    stat_spatraster(
      data = r, geom = "text",
      aes(label = after_stat(round(value))),
      check_overlap = TRUE,
      maxcell = 25
    )

  vdiffr::expect_doppelganger("nocrslyr1_05: text", p)
})
dieghernan/tidyterra documentation built on Feb. 20, 2025, 4:18 p.m.