# hcl ---------------------------------------------------------------------
test_that("can modify each hcl component", {
expect_equal(col2hcl("red", h = 180), "#00B793")
expect_equal(col2hcl("red", l = 50), "#F40000")
expect_equal(col2hcl("red", c = 50), "#B36B6B")
expect_equal(col2hcl("red", alpha = 0.5), "#FF000080")
})
# alpha -------------------------------------------------------------------
test_that("missing alpha preserves existing", {
rgb <- farver::decode_colour(rep("red", 5), to = "rgb")
alpha <- seq(0, 1, length.out = nrow(rgb))
reds <- farver::encode_colour(rgb, alpha)
expect_equal(reds, alpha(reds, NA))
expect_equal(reds, alpha(reds, rep(NA, 5)))
})
test_that("alpha values recycled to match colour", {
cols <- farver::encode_colour(farver::decode_colour(c("red", "green", "blue", "pink")))
expect_equal(cols, alpha(cols, NA))
expect_equal(cols, alpha(cols, 1))
})
test_that("col values recycled to match alpha", {
alphas <- round(seq(0, 1, length.out = 3))
reds <- alpha("red", alphas)
reds_alpha <- farver::decode_colour(reds, TRUE)[, 4]
expect_equal(alphas, reds_alpha)
})
test_that("preserves names", {
x <- c("deeppink", "hotpink", "lightpink")
expect_named(alpha(x, 0.5), NULL)
names(x) <- x
expect_named(alpha(x, 0.5), names(x))
})
# col_mix -----------------------------------------------------------------
test_that("col_mix interpolates colours", {
x <- col_mix("red", c("blue", "green"))
y <- col_mix(c("blue", "green"), "red")
expect_equal(x, y)
expect_equal(x, c("#800080", "#808000"))
x <- col_mix("red", "blue", amount = 0.75)
expect_equal(x, "#4000BFFF")
})
test_that("col_shift shifts colours correctly", {
x <- c("#FF0000", "#00FF00", "#0000FF")
expect_equal(col_shift(x, 360), x)
expect_equal(col_shift(x, 180), c("#00B8B8", "#FF92FF", "#535300"))
})
test_that("col_lighter and col_darker adjust lightness correctly", {
x <- c("#FF0000", "#00FF00", "#0000FF")
expect_equal(col_lighter(x, 30), c("#FF9999", "#99FF99", "#9999FF"))
expect_equal(col_darker(x, 30), c("#660000", "#006600", "#000066"))
})
test_that("col_saturate can (de)saturate colours", {
x <- c("#BF4040", "#40BF40", "#4040BF")
expect_equal(col_saturate(x, 30), c("#E51A1A", "#1AE51A", "#1A1AE5"))
expect_equal(col_saturate(x, -30), c("#996666", "#669966", "#666699"))
})
test_that("colour manipulation functions work on palettes", {
pal <- pal_manual(c("#FF0000", "#00FF00", "#0000FF"))
expect_equal(col_shift(pal, 180)(3), c("#00B8B8", "#FF92FF", "#535300"))
expect_equal(col_darker(pal, 30)(3), c("#660000", "#006600", "#000066"))
expect_equal(col_lighter(pal, 30)(3), c("#FF9999", "#99FF99", "#9999FF"))
expect_equal(col_saturate(pal, -50)(3), c("#BF4040", "#40BF40", "#4040BF"))
expect_equal(col_mix(pal, "white")(3), c("#FF8080", "#80FF80", "#8080FF"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.