tests/testthat/test-metric_barroso.R

test_that("Calculation works", {
  MEDI = c(rep(0,6), rep(250,4), rep(500,8), rep(0,6))
  Datetime = lubridate::as_datetime(lubridate::dhours(0:23))
  expect_equal(
    barroso_lighting_metrics(MEDI, Datetime),
    list(
      "bright_threshold" = 500 ,
      "dark_threshold" = 0,
      "bright_mean_level" = 500,
      "dark_mean_level" = 0,
      "bright_cluster" = lubridate::dhours(8),
      "dark_cluster" = lubridate::dhours(6),
      "circadian_variation" = 1.10
    )
  )
  expect_equal(
    barroso_lighting_metrics(MEDI, Datetime, loop = TRUE),
    list(
      "bright_threshold" = 500 ,
      "dark_threshold" = 0,
      "bright_mean_level" = 500,
      "dark_mean_level" = 0,
      "bright_cluster" = lubridate::dhours(8),
      "dark_cluster" = lubridate::dhours(12),
      "circadian_variation" = 1.10
    )
  )
})

test_that("Handling of missing values works", {
  MEDI = c(rep(0,6), rep(250,4), rep(500,4), NA, rep(500,3), rep(0,6))
  Datetime = lubridate::as_datetime(lubridate::dhours(0:23))
  expect_equal(
    barroso_lighting_metrics(MEDI, Datetime),
    list(
      "bright_threshold" = as.double(NA),
      "dark_threshold" = as.double(NA),
      "bright_mean_level" = as.double(NA),
      "dark_mean_level" = as.double(NA),
      "bright_cluster" = lubridate::dhours(NA),
      "dark_cluster" = lubridate::dhours(NA),
      "circadian_variation" = as.double(NA)
    )
  )
  expect_equal(
    barroso_lighting_metrics(MEDI, Datetime, na.rm = TRUE),
    list(
      "bright_threshold" = 500,
      "dark_threshold" = 0,
      "bright_mean_level" = 500,
      "dark_mean_level" = 0,
      "bright_cluster" = lubridate::dhours(4),
      "dark_cluster" = lubridate::dhours(6),
      "circadian_variation" = 1.15
    )
  )
})

test_that("Return data frame works", {
  MEDI = c(rep(0,6), rep(250,4), rep(500,8), rep(0,6))
  Datetime = lubridate::as_datetime(lubridate::dhours(0:23))
  expect_equal(
    barroso_lighting_metrics(MEDI, Datetime, as.df = TRUE),
    tibble::tibble(
      "bright_threshold" = 500 ,
      "dark_threshold" = 0,
      "bright_mean_level" = 500,
      "dark_mean_level" = 0,
      "bright_cluster" = lubridate::dhours(8),
      "dark_cluster" = lubridate::dhours(6),
      "circadian_variation" = 1.10
    )
  )
})

Try the LightLogR package in your browser

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

LightLogR documentation built on April 3, 2025, 10:10 p.m.