Nothing
test_that("pattern for erroring on mismatched CRSs works", {
expect_error(
geos_distance(
as_geos_geometry("POINT (0 1)", crs = 1234),
as_geos_geometry("POINT (0 1)", crs = 5678)
),
"are not equal"
)
})
test_that("distance functions work", {
expect_identical(geos_distance(c("POINT (0 0)", NA), "POINT (0 10)"), c(10, NA))
expect_identical(geos_distance_indexed(c("POINT (0 0)", NA), "POINT (0 10)"), c(10, NA))
expect_identical(geos_distance_hausdorff(c("POINT (0 0)", NA), "POINT (0 10)"), c(10, NA))
expect_identical(
geos_distance_hausdorff(c("POINT (0 0)", NA), "LINESTRING (0 10, 0 20)", densify = 0.1),
c(20, NA)
)
if (geos_version() >= "3.10") {
expect_identical(geos_distance_frechet(c("POINT (0 0)", NA), "POINT (0 10)"), c(10, NA))
} else {
expect_identical(geos_distance_frechet(c("POINT (0 0)", NA), "POINT (0 10)"), c(NaN, NA))
}
expect_identical(geos_distance_frechet(c("POINT (0 0)", NA), "LINESTRING (0 10, 0 20)"), c(20, NA))
expect_identical(
geos_distance_frechet(c("POINT (0 0)", NA), "LINESTRING (0 10, 0 20)", densify = 0.1),
c(20, NA)
)
})
test_that("prepared distance function works", {
skip_if_not(geos_version() >= "3.9.1")
expect_identical(geos_prepared_distance(c("POINT (0 0)", NA), "POINT (0 10)"), c(10, NA))
})
test_that("within distance functions work", {
skip_if_not(geos_version() >= "3.10.0")
expect_identical(
geos_is_within_distance(
c("POINT (0 0)", "POINT (0 0)", NA),
c("POINT (0 10)", "POINT (0 20)", "POINT (0 10)"),
15
),
c(TRUE, FALSE, NA)
)
expect_identical(
geos_prepared_is_within_distance(
c("POINT (0 0)", "POINT (0 0)", NA),
c("POINT (0 10)", "POINT (0 20)", "POINT (0 10)"),
15
),
c(TRUE, FALSE, NA)
)
})
test_that("linear referencing works", {
expect_error(geos_project("POINT (0 0)", "POINT (0 0)"), "only supports lineal geometry")
expect_identical(
geos_project(c("LINESTRING (0 0, 0 10)", NA), "POINT (0 1)"),
c(1, NA)
)
expect_identical(
geos_project("LINESTRING (0 0, 0 10)", c("POINT (0 1)", "POINT EMPTY", NA)),
c(1, NaN, NA)
)
expect_identical(
geos_project_normalized("LINESTRING (0 0, 0 10)", c("POINT (0 1)", "POINT EMPTY", NA)),
c(0.1, NaN, NA)
)
})
test_that("binary predicates work", {
# check NA handling
expect_identical(geos_disjoint(c("POINT EMPTY", NA), "POINT (0 0)"), c(TRUE, NA))
# don't know how to get any of these to throw an exception
expect_false(
geos_disjoint(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_touches(
"POINT (10 10)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_intersects(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_crosses(
"LINESTRING (-1 -1, 6 6)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_within(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_contains(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POINT (5 5)"
)
)
expect_true(
geos_overlaps(
"POLYGON ((1 1, 1 11, 11 11, 11 1, 1 1))",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_equals(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_equals_exact(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_equals_exact(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POLYGON ((0.1 0.1, 0 10, 10 10, 10 0, 0.1 0.1))",
tolerance = 0.2
)
)
expect_false(
geos_equals_exact(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POLYGON ((0.1 0.1, 0 10, 10 10, 10 0, 0.1 0.1))",
tolerance = 0.05
)
)
expect_identical(
geos_equals_exact(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POLYGON ((0.1 0.1, 0 10, 10 10, 10 0, 0.1 0.1))",
tolerance = NA
),
NA
)
expect_true(
geos_covers(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POINT (5 5)"
)
)
expect_true(
geos_covered_by(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
})
test_that("binary predicates work", {
# check NA handling
expect_identical(geos_prepared_disjoint(c("POINT EMPTY", NA), "POINT (0 0)"), c(TRUE, NA))
# don't know how to get any of these to throw an exception
expect_false(
geos_prepared_disjoint(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_touches(
"POINT (10 10)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_intersects(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_crosses(
"LINESTRING (-1 -1, 6 6)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_within(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_contains(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POINT (5 5)"
)
)
expect_true(
geos_prepared_contains_properly(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POINT (5 5)"
)
)
expect_true(
geos_prepared_overlaps(
"POLYGON ((1 1, 1 11, 11 11, 11 1, 1 1))",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
expect_true(
geos_prepared_covers(
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))",
"POINT (5 5)"
)
)
expect_true(
geos_prepared_covered_by(
"POINT (5 5)",
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
})
test_that("prepared binary predicates re-use cached prepared geometry", {
# this is hard to test from R but we can at least ensure that the line
# gets hit in code coverage
geom <- as_geos_geometry("POINT (5 5)")
expect_true(
geos_prepared_intersects(
geom,
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
# the second time should return the same result but not
# re-compute the prepared geometry
expect_true(
geos_prepared_intersects(
geom,
"POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"
)
)
})
test_that("DE9IM functions work", {
expect_identical(
geos_relate_pattern_match("FF*FF****", c(NA, "FF*FF****", "FF*FF***F")),
c(NA, TRUE, FALSE)
)
expect_error(geos_relate_pattern_match("fish", "fish"), "Unknown dimension symbol")
expect_identical(geos_relate("POINT (0 0)", c(NA, "POINT (0 0)")), c(NA, "0FFFFFFF2"))
expect_true(geos_relate_pattern("POINT (0 0)", "POINT (0 0)", "0FFFFFFF2"))
})
test_that("patttern maker works", {
expect_identical(geos_relate_pattern_create(), strrep("*", 9))
expect_identical(geos_relate_pattern_create(EE = 2), paste0(strrep("*", 8), 2))
expect_identical(geos_relate_pattern_create(EE = NA), NA_character_)
expect_identical(geos_relate_pattern_create(EE = character(0)), character(0))
expect_error(geos_relate_pattern_create(3), "All pattern characters must be one of")
})
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.