Nothing
test_that("FIVE_MS_START is 2021-10-01 AEST", {
expect_equal(
format(aemo:::FIVE_MS_START, "%Y-%m-%d", tz = "Australia/Brisbane"),
"2021-10-01"
)
expect_equal(attr(aemo:::FIVE_MS_START, "tzone"), "Australia/Brisbane")
})
test_that("aemo_aggregate_to_30min groups 5-min prices to 30-min", {
tz <- "Australia/Brisbane"
# Six 5-min intervals ending 14:05 through 14:30 -> one 30-min row at 14:30
times <- as.POSIXct(
c("2024-01-15 14:05:00", "2024-01-15 14:10:00",
"2024-01-15 14:15:00", "2024-01-15 14:20:00",
"2024-01-15 14:25:00", "2024-01-15 14:30:00"),
tz = tz
)
df <- data.frame(
settlementdate = times,
regionid = rep("NSW1", 6L),
rrp = c(60, 65, 70, 55, 80, 50),
stringsAsFactors = FALSE
)
out <- aemo:::aemo_aggregate_to_30min(df)
expect_equal(nrow(out), 1L)
expect_equal(
format(out$settlementdate, "%H:%M", tz = tz),
"14:30"
)
expect_equal(out$rrp, mean(c(60, 65, 70, 55, 80, 50)))
})
test_that("aemo_aggregate_to_30min handles on-boundary 14:00 correctly", {
tz <- "Australia/Brisbane"
# 14:00:00 is the last 5-min interval of the 13:30-14:00 trading period.
# It must map to 14:00, NOT 14:30.
times <- as.POSIXct(
c("2024-01-15 13:35:00", "2024-01-15 13:40:00",
"2024-01-15 13:45:00", "2024-01-15 13:50:00",
"2024-01-15 13:55:00", "2024-01-15 14:00:00"),
tz = tz
)
df <- data.frame(
settlementdate = times,
regionid = rep("NSW1", 6L),
rrp = c(50, 55, 60, 65, 70, 75),
stringsAsFactors = FALSE
)
out <- aemo:::aemo_aggregate_to_30min(df)
expect_equal(nrow(out), 1L)
expect_equal(
format(out$settlementdate, "%H:%M", tz = tz),
"14:00"
)
expect_equal(out$rrp, mean(c(50, 55, 60, 65, 70, 75)))
})
test_that("aemo_aggregate_to_30min handles multiple regions", {
tz <- "Australia/Brisbane"
times <- rep(
as.POSIXct(c("2024-01-15 14:05:00", "2024-01-15 14:30:00"), tz = tz),
each = 2L
)
df <- data.frame(
settlementdate = times,
regionid = rep(c("NSW1", "VIC1"), 2L),
rrp = c(60, 55, 70, 65),
stringsAsFactors = FALSE
)
out <- aemo:::aemo_aggregate_to_30min(df)
# 2 regions × 1 trading interval = 2 rows
expect_equal(nrow(out), 2L)
})
test_that("aemo_aggregate_to_30min returns df unchanged if no rrp column", {
df <- data.frame(settlementdate = Sys.time(), other = 1)
out <- aemo:::aemo_aggregate_to_30min(df)
expect_equal(nrow(out), 1L)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.