init
This commit is contained in:
commit
116abafc09
58 changed files with 5749 additions and 0 deletions
173
tests/testthat/test-styles.R
Normal file
173
tests/testthat/test-styles.R
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
test_that("pmMinimal creates correct structure", {
|
||||
style <- pmMinimal()
|
||||
|
||||
expect_s3_class(style, "pm_style")
|
||||
expect_true("colors" %in% names(style))
|
||||
expect_true("labelRules" %in% names(style))
|
||||
expect_equal(length(style$labelRules), 0)
|
||||
})
|
||||
|
||||
test_that("pmMinimal with labels creates label rules", {
|
||||
style <- pmMinimal(labels = TRUE)
|
||||
|
||||
expect_equal(length(style$labelRules), 1)
|
||||
expect_equal(style$labelRules[[1]]$dataLayer, "places")
|
||||
})
|
||||
|
||||
test_that("pmMinimal uses custom colors", {
|
||||
style <- pmMinimal(land = "#ffffff", water = "#000000")
|
||||
|
||||
expect_equal(style$colors$earth, "#ffffff")
|
||||
expect_equal(style$colors$water, "#000000")
|
||||
expect_equal(style$colors$background, "#ffffff")
|
||||
})
|
||||
|
||||
test_that("pmStyle returns valid presets", {
|
||||
minimal <- pmStyle("minimal")
|
||||
expect_s3_class(minimal, "pm_style")
|
||||
|
||||
dark <- pmStyle("minimal-dark")
|
||||
expect_s3_class(dark, "pm_style")
|
||||
expect_equal(dark$colors$earth, "#1a1a1a")
|
||||
|
||||
muted <- pmStyle("muted")
|
||||
expect_s3_class(muted, "pm_style")
|
||||
expect_true(length(muted$labelRules) > 0)
|
||||
|
||||
watercolor <- pmStyle("watercolor")
|
||||
expect_s3_class(watercolor, "pm_style")
|
||||
})
|
||||
|
||||
test_that("pmStyle validates name argument", {
|
||||
expect_error(pmStyle("invalid"), "should be one of")
|
||||
})
|
||||
|
||||
test_that("pmHideFeatures hides roads", {
|
||||
hidden <- pmHideFeatures("roads", background = "#fff")
|
||||
|
||||
expect_equal(hidden$highway, "#fff")
|
||||
expect_equal(hidden$major, "#fff")
|
||||
expect_equal(hidden$minor, "#fff")
|
||||
})
|
||||
|
||||
test_that("pmHideFeatures hides buildings", {
|
||||
hidden <- pmHideFeatures("buildings", background = "#eee")
|
||||
|
||||
expect_equal(hidden$buildings, "#eee")
|
||||
})
|
||||
|
||||
test_that("pmHideFeatures hides multiple categories", {
|
||||
hidden <- pmHideFeatures(c("roads", "buildings", "landuse"), background = "#ccc")
|
||||
|
||||
expect_equal(hidden$highway, "#ccc")
|
||||
expect_equal(hidden$buildings, "#ccc")
|
||||
expect_equal(hidden$park_a, "#ccc")
|
||||
})
|
||||
|
||||
test_that("pmCityLabels creates hierarchical labels", {
|
||||
labels <- pmCityLabels("hierarchical")
|
||||
|
||||
expect_true(length(labels) >= 4) # 4 size levels + optional region
|
||||
expect_equal(labels[[1]]$dataLayer, "places")
|
||||
})
|
||||
test_that("pmCityLabels creates major-only labels", {
|
||||
labels <- pmCityLabels("major-only", include_regions = FALSE)
|
||||
|
||||
expect_equal(length(labels), 1)
|
||||
})
|
||||
|
||||
test_that("pmCityLabels respects include_regions", {
|
||||
with_regions <- pmCityLabels("major-only", include_regions = TRUE)
|
||||
without_regions <- pmCityLabels("major-only", include_regions = FALSE)
|
||||
|
||||
expect_equal(length(with_regions), length(without_regions) + 1)
|
||||
})
|
||||
|
||||
test_that("addProtomaps accepts style parameter", {
|
||||
skip_if_not_installed("leaflet")
|
||||
|
||||
map <- leaflet::leaflet()
|
||||
# Use a mock URL since we're just testing the R code, not actual tile loading
|
||||
result <- addProtomaps(map, url = "https://example.com/tiles.pmtiles", style = pmStyle("minimal"))
|
||||
|
||||
expect_s3_class(result, "leaflet")
|
||||
})
|
||||
|
||||
# New style presets
|
||||
test_that("pmStyle returns ink preset", {
|
||||
ink <- pmStyle("ink")
|
||||
expect_s3_class(ink, "pm_style")
|
||||
expect_equal(ink$colors$background, "#ffffff")
|
||||
expect_equal(ink$colors$highway, "#000000")
|
||||
})
|
||||
|
||||
test_that("pmStyle returns terrain preset", {
|
||||
terrain <- pmStyle("terrain")
|
||||
expect_s3_class(terrain, "pm_style")
|
||||
expect_true(length(terrain$labelRules) >= 1)
|
||||
})
|
||||
|
||||
test_that("pmStyle returns transit preset", {
|
||||
transit <- pmStyle("transit")
|
||||
expect_s3_class(transit, "pm_style")
|
||||
expect_equal(transit$colors$railway, "#e63946")
|
||||
})
|
||||
|
||||
# print.pm_style
|
||||
test_that("print.pm_style outputs formatted text", {
|
||||
style <- pmMinimal(land = "#ffffff", water = "#000000", labels = TRUE)
|
||||
|
||||
output <- capture.output(print(style))
|
||||
expect_true(any(grepl("<pm_style>", output)))
|
||||
expect_true(any(grepl("Colors:", output)))
|
||||
expect_true(any(grepl("Label Rules:", output)))
|
||||
})
|
||||
|
||||
test_that("print.pm_style handles style with no labels", {
|
||||
style <- pmMinimal()
|
||||
|
||||
output <- capture.output(print(style))
|
||||
expect_true(any(grepl("Label Rules: none", output)))
|
||||
})
|
||||
|
||||
test_that("print.pm_style summarizes uniform colors", {
|
||||
style <- pmMinimal()
|
||||
|
||||
output <- capture.output(print(style))
|
||||
expect_true(any(grepl("uniform", output)))
|
||||
})
|
||||
|
||||
# pmModifyStyle
|
||||
test_that("pmModifyStyle preserves class", {
|
||||
modified <- pmModifyStyle(pmMinimal(), water = "#000000")
|
||||
expect_s3_class(modified, "pm_style")
|
||||
})
|
||||
|
||||
test_that("pmModifyStyle merges colors", {
|
||||
original <- pmMinimal(land = "#ffffff", water = "#aaaaaa")
|
||||
modified <- pmModifyStyle(original, water = "#000000")
|
||||
|
||||
expect_equal(modified$colors$water, "#000000")
|
||||
expect_equal(modified$colors$earth, "#ffffff")
|
||||
})
|
||||
|
||||
test_that("pmModifyStyle appends label rules by default", {
|
||||
original <- pmMinimal(labels = TRUE)
|
||||
new_rules <- list(pmLabelRule("water", pmCenteredTextSymbolizer()))
|
||||
|
||||
modified <- pmModifyStyle(original, labelRules = new_rules)
|
||||
expect_equal(length(modified$labelRules), 2)
|
||||
})
|
||||
|
||||
test_that("pmModifyStyle replaces labels when requested", {
|
||||
original <- pmMinimal(labels = TRUE)
|
||||
new_rules <- list(pmLabelRule("water", pmCenteredTextSymbolizer()))
|
||||
|
||||
modified <- pmModifyStyle(original, labelRules = new_rules, replace_labels = TRUE)
|
||||
expect_equal(length(modified$labelRules), 1)
|
||||
expect_equal(modified$labelRules[[1]]$dataLayer, "water")
|
||||
})
|
||||
|
||||
test_that("pmModifyStyle requires pm_style input", {
|
||||
expect_error(pmModifyStyle(list()), "must be a pm_style")
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue