@@ -285,6 +285,53 @@ TEST_F(RNTupleJoinProcessorTest, WithModel)
285
285
EXPECT_EQ (5 , proc->GetNEntriesProcessed ());
286
286
}
287
287
288
+ TEST_F (RNTupleJoinProcessorTest, WithBareModel)
289
+ {
290
+ auto primaryModel = RNTupleModel::CreateBare ();
291
+ primaryModel->MakeField <int >(" i" );
292
+ primaryModel->MakeField <float >(" x" );
293
+
294
+ std::vector<std::unique_ptr<RNTupleModel>> auxModels;
295
+
296
+ auxModels.push_back (RNTupleModel::CreateBare ());
297
+ auxModels.back ()->MakeField <std::vector<float >>(" y" );
298
+
299
+ auxModels.push_back (RNTupleModel::CreateBare ());
300
+ auxModels.back ()->MakeField <float >(" z" );
301
+
302
+ auto proc = RNTupleProcessor::CreateJoin ({fNTupleNames [0 ], fFileNames [0 ]},
303
+ {{fNTupleNames [1 ], fFileNames [1 ]}, {fNTupleNames [2 ], fFileNames [2 ]}}, {" i" },
304
+ std::move (primaryModel), std::move (auxModels));
305
+
306
+ auto i = proc->GetEntry ().GetPtr <int >(" i" );
307
+ auto x = proc->GetEntry ().GetPtr <float >(" x" );
308
+ auto y = proc->GetEntry ().GetPtr <std::vector<float >>(" ntuple2.y" );
309
+ auto z = proc->GetEntry ().GetPtr <float >(" ntuple3.z" );
310
+
311
+ int nEntries = 0 ;
312
+ std::vector<float > yExpected;
313
+ for (auto &entry : *proc) {
314
+ EXPECT_EQ (proc->GetCurrentEntryNumber (), nEntries++);
315
+
316
+ EXPECT_EQ (proc->GetCurrentEntryNumber () * 2 , *i);
317
+
318
+ EXPECT_FLOAT_EQ (*i * 0 .5f , *x);
319
+
320
+ yExpected = {static_cast <float >(*i * 0.2 ), 3.14 , static_cast <float >(*i * 1.3 )};
321
+ EXPECT_EQ (yExpected, *y);
322
+ EXPECT_FLOAT_EQ (static_cast <float >(*i * 2 .f ), *z);
323
+
324
+ try {
325
+ entry.GetPtr <float >(" ntuple2.z" );
326
+ FAIL () << " should not be able to access values from fields not present in the provided models" ;
327
+ } catch (const ROOT::RException &err) {
328
+ EXPECT_THAT (err.what (), testing::HasSubstr (" invalid field name: ntuple2.z" ));
329
+ }
330
+ }
331
+
332
+ EXPECT_EQ (5 , proc->GetNEntriesProcessed ());
333
+ }
334
+
288
335
TEST_F (RNTupleJoinProcessorTest, PartialModels)
289
336
{
290
337
{
0 commit comments