tests/testthat/test-Annual_Max.R

#Test that functions work as intended

test_that("Annual maximum functions basic functionality", {

  test_data = data.frame(S20_T_MAX_Daily_Completed_Detrend_Declustered$Date,S20_T_MAX_Daily_Completed_Detrend_Declustered$Detrend)
  test_data[,1] <- as.Date(test_data[,1], format = "%Y-%m-%d")

  result <- Annual_Max(Data_Detrend = test_data)

  # Check return type
  expect_type(result, "list")

  # Check names of output
  expect_named(result, c("Event", "AM"))

  # Verify outputs are numeric
  expect_type(result$Event, "double")
  expect_type(result$AM, "double")

  # Check length of outputs
  expect_equal(length(result$Event), length(result$AM))
  expect_lt(length(result$Event), nrow(S20_T_MAX_Daily_Completed_Detrend_Declustered[,c(2,5)])/365.25 +10)
  expect_gt(length(result$Event), nrow(S20_T_MAX_Daily_Completed_Detrend_Declustered[,c(2,5)])/365.25 -10)

})


#Test function with different percent complete values
test_that("Annual maximum function with different Complete_Prop values", {

  test_data = data.frame(S20_T_MAX_Daily_Completed_Detrend_Declustered$Date,S20_T_MAX_Daily_Completed_Detrend_Declustered$Detrend)
  test_data[,1] <- as.Date(test_data[,1], format = "%Y-%m-%d")

  result1 <- Annual_Max(Data_Detrend = test_data, Complete_Prop = 0.9)
  result2 <- Annual_Max(Data_Detrend = test_data, Complete_Prop = 0.5)

  expect_true(length(result1$Event) <= length(result2$Event))
  expect_true(length(result1$AM) <= length(result2$AM))
})


# Test that invalid inputs gives errors
test_that("Invalid inputs produce errors", {

  test_data = data.frame(S20_T_MAX_Daily_Completed_Detrend_Declustered$Date,S20_T_MAX_Daily_Completed_Detrend_Declustered$Detrend)
  test_data[,1] <- as.Date(test_data[,1], format = "%Y-%m-%d")

  expect_error(Annual_Max(Data_Detrend = test_data, Complete_Prop = -1))
  expect_error(Annual_Max(Data_Detrend = test_data, Complete_Prop = 1.15))
  expect_error(Annual_Max(Data_Detrend = test_data[,2]))
  expect_error(Annual_Max(Data_Detrend = letters[1:10]))
})

#Test reproducibility

test_that("Function is deterministic", {

  test_data = data.frame(S20_T_MAX_Daily_Completed_Detrend_Declustered$Date,S20_T_MAX_Daily_Completed_Detrend_Declustered$Detrend)
  test_data[,1] <- as.Date(test_data[,1], format = "%Y-%m-%d")

  #Find annual max
  result1 <- Annual_Max(Data_Detrend = test_data)
  result2 <- Annual_Max(Data_Detrend = test_data)

  #See whether outputs are the same
  expect_identical(result1$Event, result2$Event)
  expect_identical(result1$AM, result2$AM)
})
rjaneUCF/MultiHazard documentation built on July 4, 2025, 9:18 p.m.