Skip to content

Commit fdf6d48

Browse files
committed
updated test
1 parent c716865 commit fdf6d48

File tree

1 file changed

+80
-13
lines changed

1 file changed

+80
-13
lines changed

modules/uncertainty/tests/testthat/test_ensemble.R

Lines changed: 80 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ make_input_sets <- function(paths) {
1616

1717
# Helper: make ensemble.samples with the correct structure
1818
make_samples <- function(samples) {
19-
list(input = data.frame(samples = samples, stringsAsFactors = FALSE))
19+
lapply(paths, function(p) list(path = p))
2020
}
2121

2222
# 1. One input, no samples → should pass
@@ -53,19 +53,86 @@ test_that("no input error", {
5353

5454

5555

56-
test_that("multiple inputs, valid matching samples ", {
57-
settings <- list(run = list(inputs = list(input = NULL))) # or missing/empty paths
58-
ensemble.samples <- make_samples(c("IC1", "IC2", "IC3", "IC2"))
59-
defaults <- list()
56+
6057

61-
# Capture logger message, but don't stop execution
62-
expect_silent(write.ensemble.configs(
63-
defaults = defaults,
64-
ensemble.samples = ensemble.samples,
65-
settings = settings,
66-
model = "SIPNET",
67-
write.to.db = FALSE
68-
))
58+
59+
60+
61+
test_that("multiple inputs and multiple samples", {
62+
# Mock the SIPNET config writer
63+
mockery::stub(write.ensemble.configs, "write.config.SIPNET", function(...) TRUE)
64+
65+
# Create temp directories
66+
temp_rundir <- tempfile()
67+
temp_modeloutdir <- tempfile()
68+
dir.create(temp_rundir)
69+
dir.create(temp_modeloutdir)
70+
on.exit({
71+
unlink(temp_rundir, recursive = TRUE)
72+
unlink(temp_modeloutdir, recursive = TRUE)
73+
}, add = TRUE)
74+
75+
# Complete settings
76+
settings <- list(
77+
run = list(
78+
inputs = list(input = list(path = "IC1")),
79+
site = list(id = 1, name = "Test Site"),
80+
start.date = "2000-01-01",
81+
end.date = "2000-12-31",
82+
outdir = temp_modeloutdir
83+
),
84+
ensemble = list(size = 5),
85+
database = NULL,
86+
rundir = temp_rundir,
87+
modeloutdir = temp_modeloutdir,
88+
host = list(
89+
rundir = temp_rundir,
90+
outdir = temp_modeloutdir
91+
),
92+
model = list(id = "SIPNET", type = "SIPNET"),
93+
pfts = list(
94+
list(name = "temperate",
95+
constants = list(1),
96+
posteriorid = 1)
97+
)
98+
)
99+
100+
# Sample parameters
101+
ensemble.samples <- list(
102+
temperate = data.frame(
103+
SLA = c(15.2, 16.8, 14.7, 18.1, 17.5),
104+
Vm0 = c(45.0, 50.3, 47.8, 49.1, 51.0)
105+
)
106+
)
107+
108+
# Default PFT settings
109+
defaults <- list(
110+
list(
111+
name = "temperate",
112+
constants = list(1),
113+
posteriorid = 1
114+
)
115+
)
116+
117+
# Run test - should create directories and configs
118+
result <- expect_silent(
119+
write.ensemble.configs(
120+
defaults = defaults,
121+
ensemble.samples = ensemble.samples,
122+
settings = settings,
123+
model = "SIPNET",
124+
write.to.db = FALSE
125+
)
126+
)
127+
128+
# Verify outputs
129+
expect_type(result, "list")
130+
expect_named(result, c("runs", "ensemble.id", "samples"))
131+
expect_equal(nrow(result$runs), settings$ensemble$size)
69132
})
70133

71134

135+
136+
137+
138+

0 commit comments

Comments
 (0)