protomapr/tests/testthat/test-palette.R
2026-03-06 15:46:39 +11:00

71 lines
2 KiB
R

test_that("pmPalette creates color mapping", {
colors <- pmPalette(c("#ff0000", "#00ff00", "#0000ff"))
expect_true("water" %in% names(colors))
expect_true("background" %in% names(colors))
})
test_that("pmPalette expands paired colors", {
colors <- pmPalette(c("#ff0000", "#00ff00"), categories = c("water", "park"))
expect_equal(colors$park_a, "#00ff00")
expect_equal(colors$park_b, "#00ff00")
})
test_that("pmPalette handles custom categories", {
colors <- pmPalette(
c("#111", "#222", "#333"),
categories = c("water", "buildings", "highway")
)
expect_equal(colors$water, "#111")
expect_equal(colors$buildings, "#222")
expect_equal(colors$highway, "#333")
})
test_that("pmPalette recycles colors if needed", {
colors <- pmPalette(c("#aaa", "#bbb"), categories = c("a", "b", "c", "d"))
expect_equal(length(colors), 6) # 4 categories + background + earth
})
test_that("pmPalette handles palette functions", {
skip_if_not_installed("viridisLite")
colors <- pmPalette(viridisLite::viridis, n = 5)
expect_true("water" %in% names(colors))
})
test_that("pmPaletteStyle creates pm_style", {
style <- pmPaletteStyle(c("#1a1a2e", "#16213e", "#0f3460", "#e94560", "#533483"))
expect_s3_class(style, "pm_style")
expect_true(length(style$labelRules) > 0)
})
test_that("pmPaletteStyle respects labels parameter", {
style_with <- pmPaletteStyle(c("#000", "#fff"), labels = TRUE)
style_without <- pmPaletteStyle(c("#000", "#fff"), labels = FALSE)
expect_true(length(style_with$labelRules) > 0)
expect_equal(length(style_without$labelRules), 0)
})
test_that("pmPaletteStyle uses water_color parameter", {
style <- pmPaletteStyle(
c("#aaa", "#bbb", "#ccc"),
water_color = "#123456"
)
expect_equal(style$colors$water, "#123456")
})
test_that("pmPaletteStyle uses land_color parameter", {
style <- pmPaletteStyle(
c("#aaa", "#bbb", "#ccc"),
land_color = "#fedcba"
)
expect_equal(style$colors$background, "#fedcba")
expect_equal(style$colors$earth, "#fedcba")
})