tests/testthat/test-yearlyPlot.R

test_that("test yearlyLabels", {
  expect_equal(length(yearlyLabels()), 12)
  expect_equal(typeof(yearlyLabels()), "character")
})

test_that(".isLeapYear", {
  expect_false(.isLeapYear(1900))
  expect_true(.isLeapYear(2000))
  expect_true(.isLeapYear(2004))
  expect_false(.isLeapYear(2005))
})

test_that("yearlyPositions rejects unknown format", {
  expect_error(yearlyPositions(2001, format="amoeba"), "Unknown format: amoeba")
})

test_that("yearlyPositions gives expected results", {
  expect_equal(length(yearlyPositions()), 12)
  expect_true(is.numeric(yearlyPositions()))

  # Test shift on leap year
  ny <- yearlyPositions(2001)
  ly <- yearlyPositions(2000)
  expect_equal(sum(ny < ly), 10)
  expect_true(all(c(ny,ly) <= 2*pi))
  expect_true(all(c(ny,ly) >= 0))

  # Test days output
  expect_equal(length(yearlyPositions(2001, format="days")), 365)
  expect_equal(length(yearlyPositions(2000, format="days")), 366)

  #Test mid-month output
  sm <- yearlyPositions(2001)
  mm <- yearlyPositions(2001, format="mid-months")
  margin = 16*2*pi/366
  expect_true(all((mm-sm) < margin))
})

test_that("yearlyFraction rejects unknown input", {
  expect_error(yearlyFraction(24, input="firefly"), "Unknown input: firefly")
})

test_that("yearlyFraction gives expected results", {
  expect_equal(yearlyFraction(as.POSIXlt("2000-01-01 00:00:00"), year=2000), 0)
  expect_lte(abs(2*pi - yearlyFraction(as.POSIXlt("2000-12-31 23:59:59"))), 0.1)

  expect_equal(yearlyFraction(as.POSIXlt("2018-01-01 00:00:00"), year=2018, unit="fraction"), 0)
  expect_lte(abs(1 - yearlyFraction(as.POSIXlt("2018-12-31 23:59:59"), unit="fraction")), 0.1)

  expect_equal(yearlyFraction(0, input="day"), 0)
  expect_lte(abs(2*pi - yearlyFraction(365, input="day")), 0.1)
})

test_that("Plotting does not throw errors", {
  expect_silent(emptyYearly(2018))
  expect_silent(emptyYearly(2000))
  expect_silent(yearlyPlot(2018, lat=54, lon=2))
  expect_silent(yearlyPlot("2024", lat=54, lon=66))
  expect_silent(yearlyPlot("2024", lat=54, lon=0))
  expect_silent(yearlyPlot("2024", lat=54, lon=0, legend=TRUE))
})

Try the sonicscrewdriver package in your browser

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

sonicscrewdriver documentation built on May 29, 2024, 3:39 a.m.