tests/testthat/test-gmeta.R

library(testthat)
library(terra)
source("helper.R")

# setup
testdata <- download_nc_basic()
gisBase <- get_gisbase()

testthat::test_that("testing gmeta", {
  skip_if_not(!is.null(gisBase), "GRASS GIS not found on PATH")

  # Initialize a temporary GRASS project using the example data
  loc <- initGRASS(
    home = tempdir(),
    gisBase = gisBase,
    gisDbase = testdata$gisDbase,
    location = "nc_basic_spm_grass7",
    mapset = "PERMANENT",
    override = TRUE
  )

  # Test gmeta working
  meta <- gmeta()

  expect_equal(
    names(meta),
    c("GISDBASE", "LOCATION_NAME", "MAPSET", "GRASS_GUI", "projection", "zone", "n",
      "s", "w", "e", "t", "b", "nsres", "nsres3", "ewres", "ewres3", "tbres", "rows", "rows3",
      "cols", "cols3", "depths", "cells", "cells3", "proj4")
  )

  expect_equal(meta$LOCATION_NAME, testdata$location)
  expect_equal(meta$projection, "99")

  # Test old proj4 output from grass
  meta2 <- gmeta(g.proj_WKT = FALSE)
  expect_equal(meta2$proj4, paste(crs("epsg:3358", proj = TRUE), "+type=crs"))

  # Test gmeta2grd
  meta3 <- gmeta2grd()
  expect_s4_class(meta3, "GridTopology")

  # Test just returning the projection
  meta4 <- getLocationProj()
  expect_equal(meta4, meta$proj4)

  meta4 <- getLocationProj(g.proj_WKT = FALSE)
  expect_equal(meta4, paste(crs("epsg:3358", proj = TRUE), "+type=crs"))

  # Test coercion of projection into terra and sp classes
  gLP <- getLocationProj()
  expect_type(terra::crs(gLP), "character")

  # disabled due to unknown issue with sp reading WTK
  # expect_s4_class(sp::CRS(gLP), "CRS")
})
rsbivand/rgrass7 documentation built on Feb. 2, 2025, 6:09 a.m.