diff --git a/tests/testthat/test-scale-manual.r b/tests/testthat/test-scale-manual.r index b8af871e99..d33fe17da8 100644 --- a/tests/testthat/test-scale-manual.r +++ b/tests/testthat/test-scale-manual.r @@ -1,9 +1,13 @@ context("scale_manual") test_that("names of values used in manual scales", { - s <- scale_colour_manual(values = c("8" = "c","4" = "a","6" = "b")) - s$train(c("4", "6", "8")) - expect_equal(s$map(c("4", "6", "8")), c("a", "b", "c")) + s1 <- scale_colour_manual(values = c("8" = "c", "4" = "a", "6" = "b")) + s1$train(c("4", "6", "8")) + expect_equal(s1$map(c("4", "6", "8")), c("a", "b", "c")) + + s2 <- scale_colour_manual(values = c("8" = "c", "4" = "a", "6" = "b"), na.value = NA) + s2$train(c("4", "8")) + expect_equal(s2$map(c("4", "6", "8")), c("a", NA, "c")) }) @@ -87,13 +91,53 @@ test_that("unnamed values match breaks in manual scales", { }) test_that("limits works (#3262)", { - # named charachter vector + # named character vector s1 <- scale_colour_manual(values = c("8" = "c", "4" = "a", "6" = "b"), limits = c("4", "8"), na.value = NA) s1$train(c("4", "6", "8")) expect_equal(s1$map(c("4", "6", "8")), c("a", NA, "c")) - # named charachter vector + # unnamed character vector s2 <- scale_colour_manual(values = c("c", "a", "b"), limits = c("4", "8"), na.value = NA) s2$train(c("4", "6", "8")) expect_equal(s2$map(c("4", "6", "8")), c("c", NA, "a")) }) + +test_that("fewer values (#3451)", { + # named character vector + s1 <- scale_colour_manual(values = c("4" = "a", "8" = "c"), na.value = NA) + s1$train(c("4", "6", "8")) + expect_equal(s1$map(c("4", "6", "8")), c("a", NA, "c")) + + # unnamed character vector + s2 <- scale_colour_manual(values = c("4", "8"), na.value = NA) + s2$train(c("4", "6", "8")) + expect_error(s2$map(c("4", "6", "8")), "Insufficient values") +}) + +test_that("limits and breaks (#4619)", { + # values don't change legend order + s1 <- scale_colour_manual( + values = c("8" = "c", "4" = "a", "6" = "b"), + ) + s1$train(c("8", "6", "4")) + expect_equal(s1$map(c("8", "6", "4")), c("c", "b", "a")) + expect_equal(s1$break_positions(), c("a", "b", "c")) + + # limits change legend order + s2 <- scale_colour_manual( + values = c("8" = "c", "4" = "a", "6" = "b", "0" = "x"), + limits = c("0", "4", "6", "8") + ) + s2$train(c("8", "6", "4")) + expect_equal(s2$map(c("4", "6", "8")), c("a", "b", "c")) + expect_equal(s2$break_positions(), c("x", "a", "b", "c")) + + # breaks work + s3 <- scale_colour_manual( + values = c("8" = "c", "4" = "a", "6" = "b"), + breaks = c("4", "8") + ) + s3$train(c("4", "6", "8")) + expect_equal(s3$map(c("4", "6", "8")), c("a", "b", "c")) + expect_equal(s3$break_positions(), c("a", "c")) +})