@@ -16,7 +16,7 @@ make_input_sets <- function(paths) {
1616
1717# Helper: make ensemble.samples with the correct structure
1818make_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