Nothing
test_that("make point works", {
expect_true(geos_is_empty(geos_make_point(NA, NA)))
expect_identical(geos_write_wkt(geos_make_point(1, 2)), "POINT (1 2)")
expect_identical(geos_write_wkt(geos_make_point(1, 2, 3)), "POINT Z (1 2 3)")
expect_identical(wk::wk_crs(geos_make_point(1, 2, crs = 123)), 123)
})
test_that("make linestring works", {
expect_true(geos_is_empty(geos_make_linestring(double(), double(), double())))
expect_identical(
geos_write_wkt(geos_make_linestring(1:2, 3:4)),
"LINESTRING (1 3, 2 4)"
)
expect_identical(
geos_write_wkt(geos_make_linestring(1:2, 3:4, 5:6)),
"LINESTRING Z (1 3 5, 2 4 6)"
)
expect_error(geos_make_linestring(1, 1), "IllegalArgumentException")
expect_identical(wk::wk_crs(geos_make_linestring(1:2, 2:3, crs = 123)), 123)
})
test_that("make polygon works", {
expect_true(geos_is_empty(geos_make_polygon(double(), double(), double())))
# no hole
expect_identical(
geos_write_wkt(geos_make_polygon(c(0, 1, 0, 0), c(0, 0, 1, 0))),
"POLYGON ((0 0, 1 0, 0 1, 0 0))"
)
# with z
expect_identical(
geos_write_wkt(geos_make_polygon(c(0, 1, 0, 0), c(0, 0, 1, 0), 5)),
"POLYGON Z ((0 0 5, 1 0 5, 0 1 5, 0 0 5))"
)
# with hole
expect_identical(
geos_write_wkt(
geos_make_polygon(
c(0, 1, 0, 0, 0.1, 0.2, 0.1, 0.1),
c(0, 0, 1, 0, 0.1, 0.1, 0.2, 0.1),
ring_id = rep(1:2, each = 4)
)
),
"POLYGON ((0 0, 1 0, 0 1, 0 0), (0.1 0.1, 0.2 0.1, 0.1 0.2, 0.1 0.1))"
)
# multiple features
expect_identical(
geos_write_wkt(
geos_make_polygon(
c(0, 1, 0, 0, 0.1, 0.2, 0.1, 0.1),
c(0, 0, 1, 0, 0.1, 0.1, 0.2, 0.1),
feature_id = rep(1:2, each = 4)
)
),
c("POLYGON ((0 0, 1 0, 0 1, 0 0))", "POLYGON ((0.1 0.1, 0.2 0.1, 0.1 0.2, 0.1 0.1))")
)
# auto-closing hole (2D)
expect_identical(
geos_write_wkt(geos_make_polygon(c(0, 1, 0), c(0, 0, 1))),
"POLYGON ((0 0, 1 0, 0 1, 0 0))"
)
# auto-closing hole (3D)
expect_identical(
geos_write_wkt(geos_make_polygon(c(0, 1, 0), c(0, 0, 1), 5)),
"POLYGON Z ((0 0 5, 1 0 5, 0 1 5, 0 0 5))"
)
# bad ring (first and subsequent)
expect_error(geos_make_polygon(1, 1), "IllegalArgumentException")
expect_error(
geos_make_polygon(c(0, 1, 0, 0, 12), c(0, 0, 1, 0, 12), ring_id = c(rep(1, 4), 2)),
"IllegalArgumentException"
)
# crs
expect_identical(
wk::wk_crs(geos_make_polygon(c(0, 1, 0, 0), c(0, 0, 1, 0), crs = 123)),
123
)
})
test_that("make collection works", {
expect_identical(
geos_write_wkt(
geos_make_collection(c("POINT (1 1)", "POINT (2 2)"), feature_id = 1L)
),
"GEOMETRYCOLLECTION (POINT (1 1), POINT (2 2))"
)
expect_identical(
geos_write_wkt(
geos_make_collection(c("POINT (1 1)", "POINT (2 2)"), feature_id = 1:2)
),
c("GEOMETRYCOLLECTION (POINT (1 1))", "GEOMETRYCOLLECTION (POINT (2 2))")
)
expect_identical(geos_write_wkt(geos_make_collection(character(0))), "GEOMETRYCOLLECTION EMPTY")
expect_error(geos_make_collection(c("POINT (1 1)", NA)), "Can't nest a missing")
expect_error(geos_make_collection("POINT (1 2)", type_id = 12), "Unsupported type")
bad_ptr <- geos_read_wkt("POINT (1 1)")
tmp <- tempfile()
saveRDS(bad_ptr, tmp)
bad_ptr <- readRDS(tmp)
expect_error(geos_make_collection(bad_ptr), "External pointer is not valid")
expect_identical(
wk::wk_crs(geos_make_collection(as_geos_geometry("POINT (1 2)", crs = 123))),
123
)
})
test_that("geos_create_rectangle() works", {
skip_if_not(geos_version() >= "3.11.0")
expect_identical(
geos_write_wkt(geos_create_rectangle(0, 1, 2, 3)),
"POLYGON ((0 1, 2 1, 2 3, 0 3, 0 1))"
)
expect_identical(
geos_create_rectangle(
c(NA, NaN, 0, 0, 0, 0, 0, 0),
c(1, 1, NA, NaN, 1, 1, 1, 1),
c(2, 2, 2, 2, NA, NaN, 2, 2),
c(3, 3, 3, 3, 3, 3, NA, NaN)
),
new_geos_geometry(rep(list(NULL), 8))
)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.