tests/testthat/test-tar-terra-vect.R

# test_that() # nolint
targets::tar_test("tar_terra_vect() works", {
  targets::tar_script({
    lux_area <- function(projection = "EPSG:4326") {
      terra::project(
        terra::vect(system.file("ex", "lux.shp", package = "terra")),
        projection
      )
    }
    list(
      geotargets::tar_terra_vect(
        test_terra_vect,
        lux_area()
      ),
      geotargets::tar_terra_vect(
        test_terra_vect_shz,
        lux_area(),
        filetype = "ESRI Shapefile"
      )
    )
  })
  targets::tar_make(reporter = "silent")
  x <- targets::tar_read(test_terra_vect)
  y <- targets::tar_read(test_terra_vect_shz)
  expect_s4_class(x, "SpatVector")
  expect_s4_class(y, "SpatVector")
  expect_snapshot(x)
  expect_snapshot(y)
  expect_identical(terra::values(x), terra::values(y))
})


targets::tar_test("tar_terra_vect() works with dynamic branching", {
  targets::tar_script({
    list(
      geotargets::tar_terra_vect(
        my_vect,
        terra::vect(system.file("ex", "lux.shp", package = "terra"))
      ),
      targets::tar_target(
        to_sub,
        c("Clervaux", "Redange")
      ),
      geotargets::tar_terra_vect(
        my_vect_subs,
        my_vect[my_vect$NAME_2 == to_sub],
        pattern = to_sub
      )
    )
  })
  targets::tar_make(reporter = "silent")
  expect_length(targets::tar_read(my_vect_subs), 2)
})

targets::tar_test("tar_terra_vect() works with multiple workers (tests un/marshaling)", {
  targets::tar_script({
    targets::tar_option_set(
      controller = crew::crew_controller_local(workers = 2)
    )
    list(
      geotargets::tar_terra_vect(
        vect1,
        terra::vect(system.file("ex", "lux.shp", package = "terra"))
      ),
      geotargets::tar_terra_vect(
        vect2,
        terra::vect(system.file("ex", "lux.shp", package = "terra"))
      )
    )
  })
  targets::tar_make(reporter = "silent")
  expect_true(all(is.na(targets::tar_meta()$error)))
  expect_s4_class(targets::tar_read(vect1), "SpatVector")
})

Try the geotargets package in your browser

Any scripts or data that you put into this service are public.

geotargets documentation built on June 8, 2025, 11:54 a.m.