tests/testthat/test-pkg-nanoarrow.R

test_that("extension arrays infer the correct ptype for arrays", {
  array <- as_geoarrow_array("POINT (0 1)")
  ptype <- nanoarrow::infer_nanoarrow_ptype(array)
  expect_s3_class(ptype, "geoarrow_vctr")
  parsed <- geoarrow_schema_parse(ptype)
  expect_identical(parsed$id, enum$Type$WKT)
})

test_that("extension arrays are converted to the correct vector type", {
  array <- as_geoarrow_array("POINT (0 1)")
  vctr <- nanoarrow::convert_array(array)
  expect_s3_class(vctr, "geoarrow_vctr")
  expect_identical(wk::as_wkt(vctr), wk::wkt("POINT (0 1)"))

  expect_error(
    nanoarrow::convert_array(array, integer()),
    "Can't convert geoarrow extension array to object of class 'integer'"
  )
})

test_that("R vectors can be converted to the geoarrow array type", {
  array <- nanoarrow::as_nanoarrow_array(
    "POINT (0 1)",
    schema = na_extension_geoarrow("POINT")
  )

  schema <- infer_nanoarrow_schema(array)
  expect_identical(schema$format, "+s")
  expect_identical(schema$metadata[["ARROW:extension:name"]], "geoarrow.point")
})
paleolimbot/geoarrow documentation built on April 17, 2025, 11:30 p.m.