test_that("Group methods", {
skip_on_cran()
eplusr_option(verbose_info = FALSE)
path_idfs <- path_eplus_example(LATEST_EPLUS_VER,
c("1ZoneDataCenterCRAC_wPumpedDXCoolingCoil.idf",
"1ZoneEvapCooler.idf",
"1ZoneParameterAspect.idf",
"1ZoneUncontrolled_DD2009.idf",
"1ZoneUncontrolled_DDChanges.idf"
)
)
path_epws <- path_eplus_weather(LATEST_EPLUS_VER,
c("USA_CA_San.Francisco.Intl.AP.724940_TMY3.epw",
"USA_CO_Golden-NREL.724666_TMY3.epw",
"USA_FL_Tampa.Intl.AP.722110_TMY3.epw",
"USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw",
"USA_VA_Sterling-Washington.Dulles.Intl.AP.724030_TMY3.epw"
)
)
expect_error(group_job(empty_idf(LATEST_EPLUS_VER)), "local", class = "eplusr_error")
# can stop if input model is not saved after modification
expect_error(
group_job(
list(
{idf <- read_idf(path_idfs[[1]]); idf$RunPeriod <- NULL; idf},
path_idfs[1]
),
NULL
),
"save",
class = "eplusr_error"
)
expect_silent(group_job(path_idfs, path_epws[1L]))
expect_silent(group_job(path_idfs[1], path_epws))
expect_silent(grp <- group_job(path_idfs, NULL))
expect_equal(grp$status(),
list(run_before = FALSE, alive = FALSE, terminated = NA,
successful = NA, changed_after = NA,
job_status = data.table(index = 1:5, status = "idle",
idf = path_idfs, epw = NA_character_
)
)
)
# Run and Status {{{
# can run in the same folder
expect_equal({
grp$run(dir = file.path(tempdir(), "test"), separate = FALSE)
basename(grp$status()$job_status$output_dir)
}, rep("test", 5L))
# can run in different folders
expect_equal({
grp$run(dir = file.path(tempdir(), "test"), separate = TRUE)
basename(grp$status()$job_status$output_dir)
}, tools::file_path_sans_ext(basename(path_idfs)))
# can run the simulation and get status of simulation
expect_equal({grp$run(dir = file.path(tempdir(), "test"), echo = FALSE); status <- grp$status(); names(status)},
c("run_before", "alive", "terminated", "successful", "changed_after", "job_status")
)
expect_equal(status[c("run_before", "alive", "terminated", "successful", "changed_after")],
list(run_before = TRUE, alive = FALSE, terminated = FALSE,
successful = FALSE, changed_after = FALSE
)
)
expect_equal(names(status$job_status),
c("index", "status", "idf", "epw", "version", "exit_status", "start_time", "end_time",
"output_dir", "energyplus", "stdout", "stderr"
)
)
expect_equal(status$job_status$exit_status, c(0L, 0L, 1L, 0L, 0L))
# }}}
# Errors {{{
expect_silent(grp$errors(2))
expect_warning(grp$errors(3), class = "eplusr_warning_job_error")
# }}}
# Output Dir{{{
expect_silent(grp$output_dir(1))
expect_warning(grp$output_dir(3), class = "eplusr_warning_job_error")
# }}}
# Table {{{
expect_error(grp$list_table())
expect_silent(lsts <- grp$list_table(c(1, 2, 4)))
expect_type(lsts, "list")
expect_equal(length(lsts), 3L)
expect_error(grp$read_table())
expect_silent(tables <- grp$read_table(c(1, 2, 4), "Zones"))
expect_equal(names(tables)[1:2], c("index", "case"))
# }}}
# RDD & MDD {{{
expect_error(grp$read_rdd(3))
expect_silent(rdds <- grp$read_rdd(c(1, 2, 4)))
expect_s3_class(rdds, "data.table")
expect_error(grp$read_mdd(3))
expect_silent(mdds <- grp$read_mdd(c(1, 2, 4)))
expect_s3_class(mdds, "data.table")
# }}}
# Report Data Dict {{{
expect_error(grp$report_data_dict(), class = "eplusr_error_job_error")
expect_s3_class(grp$report_data_dict(c(1, 2, 4, 5)), "data.table")
expect_true(has_names(grp$report_data_dict(c(1, 2, 4, 5)), "index"))
expect_true(has_names(grp$report_data_dict(c(1, 2, 4, 5)), "case"))
expect_equal(nrow(grp$report_data_dict(2)), 23)
expect_equal(nrow(grp$report_data_dict("1zoneevapcooler")), 23)
# }}}
# Tabular Data {{{
expect_equal(nrow(grp$tabular_data(c(1, 2, 4, 5))), 22472L)
expect_equal(nrow(grp$tabular_data(c(1, 2, 4, 5),
report_name = c(
"AnnualBuildingUtilityPerformanceSummary",
"Initialization Summary"
))),
3134L
)
expect_equal(nrow(grp$tabular_data(c(1, 2, 4, 5), table_name = "Site and Source Energy")), 12 * 4)
expect_equal(nrow(grp$tabular_data(c(1, 2, 4, 5), column_name = "Total Energy")), 4 * 4)
expect_equal(nrow(grp$tabular_data(c(1, 2, 4, 5), row_name = "Total Site Energy")), 3 * 4)
expect_equal(nrow(grp$tabular_data(2)), 4116)
expect_equal(nrow(grp$tabular_data(2,
report_name = c(
"AnnualBuildingUtilityPerformanceSummary",
"Initialization Summary"
))),
777L
)
expect_equal(nrow(grp$tabular_data("1zoneevapcooler", table_name = "Site and Source Energy")), 12)
expect_equal(nrow(grp$tabular_data("1zoneevapcooler", column_name = "Total Energy")), 4)
expect_equal(nrow(grp$tabular_data("1zoneevapcooler", row_name = "Total Site Energy")), 3)
# can convert to wide table
expect_silent(tab <- grp$tabular_data("1zoneevapcooler", row_name = "Total Site Energy", wide = TRUE))
expect_equal(names(tab), "AnnualBuildingUtilityPerformanceSummary.Entire Facility.Site and Source Energy")
expect_equal(
ignore_attr = TRUE,
tab[[1L]][, lapply(.SD, class)],
data.table(
index = "integer",
case = "character",
report_name = "character",
report_for = "character",
table_name = "character",
row_name = "character",
`Total Energy [GJ]` = "numeric",
`Energy Per Total Building Area [MJ/m2]` = "numeric",
`Energy Per Conditioned Building Area [MJ/m2]` = "numeric"
)
)
# }}}
# Report Data {{{
expect_equal(nrow(grp$report_data(2, grp$report_data_dict(2))), 920)
expect_equal(nrow(grp$report_data(2)), 920)
expect_equal(nrow(grp$report_data(2, name = c("Electricity:Facility", "Electricity:HVAC"))), 8)
expect_equal(lubridate::tz(grp$report_data(2, tz = "Asia/Shanghai")$datetime),
"Asia/Shanghai"
)
expect_equal(names(grp$report_data(2, all = TRUE)),
c("index", "case", "datetime", "month", "day", "hour", "minute", "dst", "interval",
"simulation_days", "day_type", "environment_name",
"environment_period_index", "is_meter", "type", "index_group",
"timestep_type", "key_value", "name", "reporting_frequency",
"schedule_name", "units", "value"
)
)
expect_equal(nrow(grp$report_data(2, period = seq(
lubridate::ymd_hms("2019-12-21 1:0:0"), lubridate::ymd_hms("2019-12-22 0:0:0"), "1 hour")
)), 437)
expect_equal(nrow(grp$report_data(2, month = 12)), 460)
expect_equal(nrow(grp$report_data(2, month = 12, hour = 1)), 19)
expect_equal(nrow(grp$report_data(2, minute = 0)), 920)
# See https://github.com/NREL/EnergyPlus/issues/8367
expect_equal(nrow(grp$report_data(2, interval = 60)), 920)
expect_equal(nrow(grp$report_data(2, simulation_days = 1)), 920)
expect_equal(nrow(grp$report_data(2, day_type = "WinterDesignDay")), 460)
expect_equal(nrow(grp$report_data(2, environment_name = "DENVER CENTENNIAL ANN HTG 99.6% CONDNS DB")), 460)
# }}}
# S3 {{{
expect_output(grp$print())
expect_true(grp == grp)
expect_false(grp != grp)
# }}}
skip_on_os("mac")
# Locate Output {{{
expect_error(grp$locate_output(suffix = ".sql"))
expect_equal(grp$locate_output(2, suffix = ".sql"),
normalizePath(file.path(tempdir(), "test",
tools::file_path_sans_ext(basename(path_idfs[2])),
paste0(tools::file_path_sans_ext(basename(path_idfs[2])), ".sql")
))
)
# }}}
# List files {{{
expect_type(files <- grp$list_files(c(1, 2), simplify = TRUE), "list")
expect_equal(length(files), 2L)
expect_equal(length(files[[1]]), 21L)
expect_equal(length(files[[2]]), 21L)
expect_type(files <- grp$list_files(c(1, 2), simplify = TRUE, full = TRUE), "list")
expect_equal(length(files), 2L)
expect_equal(normalizePath(dirname(files[[1]])), rep(grp$output_dir(1), 21L))
expect_equal(normalizePath(dirname(files[[2]])), rep(grp$output_dir(2), 21L))
expect_s3_class(files <- grp$list_files(c(1, 2), simplify = FALSE), "data.table")
expect_equal(names(files), c("index", "type", "file"))
expect_equal(nrow(files), 114L)
expect_s3_class(files <- grp$list_files(c(1, 2), simplify = FALSE, full = TRUE), "data.table")
expect_equal(names(files), c("index", "type", "file"))
expect_equal(nrow(files), 114L)
# }}}
})
# vim: set fdm=marker:
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.