Nothing
# tests/testthat/test-dggrid-compat-functions.R
# Tests for dggridR compatibility layer functions
test_that("as_dggrid converts hexify_grid to dggridR format", {
grid <- hexify_grid(area = 1000, aperture = 3)
dggs <- as_dggrid(grid)
expect_type(dggs, "list")
expect_equal(dggs$aperture, 3)
expect_equal(dggs$res, grid$resolution)
expect_equal(dggs$topology, "HEXAGON")
expect_equal(dggs$projection, "ISEA")
expect_equal(dggs$precision, 7L)
expect_equal(dggs$pole_lon_deg, 11.25)
})
test_that("as_dggrid rejects non-hexify_grid objects", {
expect_error(as_dggrid(list(a = 1)), "must be a hexify_grid object")
expect_error(as_dggrid(data.frame()), "must be a hexify_grid object")
})
test_that("from_dggrid converts dggridR format to hexify_grid", {
dggs <- list(
res = 5L,
aperture = 3L,
topology = "HEXAGON",
projection = "ISEA"
)
grid <- from_dggrid(dggs)
expect_s3_class(grid, "hexify_grid")
expect_equal(grid$resolution, 5L)
expect_equal(grid$aperture, 3L)
})
test_that("from_dggrid rejects invalid input", {
expect_error(from_dggrid("not a list"), "must be a list")
expect_error(from_dggrid(list()), "missing required fields")
expect_error(from_dggrid(list(res = 5)), "missing required fields")
})
test_that("from_dggrid warns on unsupported projection", {
dggs <- list(
res = 5L,
aperture = 3L,
topology = "HEXAGON",
projection = "FULLER"
)
expect_warning(from_dggrid(dggs), "Only ISEA projection")
})
test_that("from_dggrid warns on unsupported topology", {
dggs <- list(
res = 5L,
aperture = 3L,
topology = "DIAMOND",
projection = "ISEA"
)
expect_warning(from_dggrid(dggs), "Only HEXAGON topology")
})
test_that("from_dggrid rejects unsupported aperture", {
dggs <- list(
res = 5L,
aperture = 5L,
topology = "HEXAGON",
projection = "ISEA"
)
expect_error(from_dggrid(dggs), "Aperture 5 not supported")
})
test_that("from_dggrid warns on non-default orientation", {
dggs <- list(
res = 5L,
aperture = 3L,
topology = "HEXAGON",
projection = "ISEA",
pole_lon_deg = 0
)
expect_warning(from_dggrid(dggs), "Non-default pole_lon_deg")
dggs$pole_lon_deg <- 11.25
dggs$pole_lat_deg <- 0
expect_warning(from_dggrid(dggs), "Non-default pole_lat_deg")
dggs$pole_lat_deg <- 58.28252559
dggs$azimuth_deg <- 45
expect_warning(from_dggrid(dggs), "Non-default azimuth_deg")
})
test_that("dggrid_is_compatible validates compatible grids", {
dggs <- list(
res = 5L,
aperture = 3L,
topology = "HEXAGON",
projection = "ISEA"
)
expect_true(dggrid_is_compatible(dggs))
})
test_that("dggrid_is_compatible rejects incompatible grids (strict=TRUE)", {
# Not a list
expect_error(dggrid_is_compatible("not a list"), "not compatible")
# Wrong projection
dggs <- list(aperture = 3L, topology = "HEXAGON", projection = "FULLER")
expect_error(dggrid_is_compatible(dggs), "ISEA projection")
# Wrong topology
dggs <- list(aperture = 3L, topology = "DIAMOND", projection = "ISEA")
expect_error(dggrid_is_compatible(dggs), "HEXAGON topology")
# Wrong aperture
dggs <- list(aperture = 5L, topology = "HEXAGON", projection = "ISEA")
expect_error(dggrid_is_compatible(dggs), "Aperture must be")
})
test_that("dggrid_is_compatible returns FALSE for incompatible grids (strict=FALSE)", {
dggs <- list(aperture = 3L, topology = "HEXAGON", projection = "FULLER")
expect_false(dggrid_is_compatible(dggs, strict = FALSE))
dggs <- list(aperture = 3L, topology = "DIAMOND", projection = "ISEA")
expect_false(dggrid_is_compatible(dggs, strict = FALSE))
})
test_that("dggrid_is_compatible detects non-default orientation", {
dggs <- list(
aperture = 3L,
topology = "HEXAGON",
projection = "ISEA",
pole_lon_deg = 0
)
expect_error(dggrid_is_compatible(dggs), "pole_lon_deg")
})
test_that("round-trip: hexify_grid -> dggridR -> hexify_grid", {
original <- hexify_grid(area = 1000, aperture = 3)
dggs <- as_dggrid(original)
recovered <- from_dggrid(dggs)
expect_equal(original$resolution, recovered$resolution)
expect_equal(original$aperture, recovered$aperture)
})
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.