tests/testthat/test-continuousColorPal.R

context("Continuous Color Scale")

# Default colors
posCol <- "#0000FF"
zeroCol <- "#FFFFFF"
negCol <- "#FF0000"
# Custom colors
custZeroCol <- "#FF0000"
custPosCol <- "#00FF00"

test_that("returns a vector of colors with break points and color palette", {
  cols <- continuousColorPal(1:100)
  expect_is(cols, "character")
  expect_true(all(grepl("^#[0-9A-F]{6}", cols)))
  expect_false(is.null(attr(cols, "breaks")))
  expect_false(is.null(attr(cols, "pal")))
})

test_that("works with positive values", {
  cols <- continuousColorPal(1:100)
  expect_equal(cols[1], zeroCol)
  expect_equal(cols[100], posCol)
})

test_that("works with negative values", {
  cols <- continuousColorPal(-1:-100)
  expect_equal(cols[1], zeroCol)
  expect_equal(cols[100], negCol)
})

test_that("works with positive and negative values", {
  cols <- continuousColorPal(-100:100)
  expect_equal(cols[1], negCol)
  expect_equal(cols[101], zeroCol)
  expect_equal(cols[201], posCol)
})

test_that("modifies the number of break points", {
  cols1 <- continuousColorPal(1:100, 3)
  cols2 <- continuousColorPal(1:100, 10)
  expect_gt(length(unique(cols2)), length(unique(cols1)))
})

test_that("accepts custom domains", {
  cols <- continuousColorPal(1:100, domain = c(0, 1000))
  expect_equal(max(attr(cols, "breaks")), 1000)
  expect_false(cols[100] == posCol)
})

test_that("accepts custom break points", {
  cols <- continuousColorPal(1:100, breaks = c(0, 80, 100))
  expect_true(all(cols[1:80] == zeroCol))
  expect_true(all(cols[81:100] == posCol))
})

test_that("accepts custom colors if custom break points", {
  cols <- continuousColorPal(1:100, breaks = c(0, 80, 100), 
                             colors = c(custZeroCol, custPosCol))
  expect_true(all(cols[1:80] == custZeroCol))
  expect_true(all(cols[81:100] == custPosCol))
})

test_that("ignores custom colors if automatic break points", {
  cols <- continuousColorPal(1:100, colors = c(custZeroCol, custPosCol))
  expect_true(all(cols[1] == zeroCol))
  expect_true(all(cols[100] == posCol))
})
rte-antares-rpackage/antaresViz documentation built on Oct. 18, 2023, 2:04 p.m.