tests/testthat/test-ggplot.R

test_that("Scales", {
  date_scale <- ggplot2::scale_type(new_ethdate())
  difftime_scale <- ggplot2::scale_type(new_ethdifftime())
  expect_equal(date_scale, c("ethdate", "continuous"))
  expect_equal(difftime_scale, "continuous")
  expect_no_error(scales::rescale(eth_date(0:10)))
})


test_that("No error with ggplot", {
  cpieth[["eth"]] <- eth_date(cpieth$date)
  expect_no_error(
      ggplot2::ggplot(cpieth, ggplot2::aes(eth, cpi)) +
    ggplot2::geom_line() +
    scale_x_ethdate(breaks = eth_breaks(5), labels = eth_labels("%Y"),
                    name = "Ethiopian year")
  )
  expect_no_error(
    ggplot2::ggplot(cpieth, ggplot2::aes(cpi, eth)) +
      ggplot2::geom_line() +
      scale_y_ethdate(breaks = eth_breaks(5, FALSE), labels = eth_labels("%Y"),
                      name = "Ethiopian year")
  )
})






test_that("eth_breaks() returns expected breaks (pretty = TRUE)", {
  x <- eth_date(c("2015-01-01", "2017-01-01"))

  breaks_fun <- eth_breaks(n = 4, pretty = TRUE)
  breaks <- breaks_fun(x)

  expect_s3_class(breaks, "ethdate")
  expect_true(length(breaks) >= 4)

  labels_fun <- eth_labels("%Y")
  expect_equal(labels_fun(x), c("2015", "2017"))

})

test_that("eth_breaks() returns expected breaks (pretty = FALSE)", {
  x <- eth_date(c("2015-01-01", "2017-01-01"))

  breaks_fun <- eth_breaks(n = 4, pretty = FALSE)
  breaks <- breaks_fun(x)

  expect_s3_class(breaks, "ethdate")
  expect_equal(length(breaks), 4)
  expect_true(all(vctrs::vec_data(breaks) >= min(vctrs::vec_data(x))))
  expect_true(all(vctrs::vec_data(breaks) <= max(vctrs::vec_data(x))))
})

Try the ethiodate package in your browser

Any scripts or data that you put into this service are public.

ethiodate documentation built on June 8, 2025, 1:29 p.m.