@@ -291,33 +291,53 @@ TEST_F(RNTupleProcessorTest, ChainedChain)
291291{
292292 std::vector<std::unique_ptr<RNTupleProcessor>> innerProcs;
293293 innerProcs.push_back (
294- RNTupleProcessor::CreateChain ({{fNTupleNames [0 ], fFileNames [0 ]}, {fNTupleNames [0 ], fFileNames [0 ]}}));
295- innerProcs.push_back (RNTupleProcessor::Create ({fNTupleNames [0 ], fFileNames [0 ]}));
294+ RNTupleProcessor::CreateChain ({{fNTupleNames [1 ], fFileNames [1 ]}, {fNTupleNames [2 ], fFileNames [2 ]}}));
295+ innerProcs.push_back (
296+ RNTupleProcessor::CreateChain ({{fNTupleNames [1 ], fFileNames [1 ]}, {fNTupleNames [2 ], fFileNames [2 ]}}));
296297
297298 auto proc = RNTupleProcessor::CreateChain (std::move (innerProcs));
298299
299300 auto i = proc->RequestField <int >(" i" );
300- auto x = proc->RequestField <float >(" x" );
301+ auto z = proc->RequestField <float >(" z" );
302+ auto strct_a = proc->RequestField <float >(" struct.a" );
301303
302304 for (auto idx : *proc) {
303305 EXPECT_EQ (idx + 1 , proc->GetNEntriesProcessed ());
304306 EXPECT_EQ (idx, proc->GetCurrentEntryNumber ());
305- EXPECT_EQ (*i, proc->GetCurrentEntryNumber () % 5 );
306- EXPECT_EQ (static_cast <float >(*i), *x);
307+ if ((idx >= 5 && idx < 10 ) || idx >= 15 ) {
308+ EXPECT_EQ (*i, 4 - idx % 5 );
309+ EXPECT_EQ (*z, (4 - idx % 5 ) * 3 .f );
310+ } else {
311+ EXPECT_EQ (*i, idx % 5 );
312+ EXPECT_EQ (*z, (idx % 5 ) * 2 .f );
313+ }
314+
315+ EXPECT_EQ (*strct_a, *z);
307316 }
308- EXPECT_EQ (15 , proc->GetNEntriesProcessed ());
317+ EXPECT_EQ (20 , proc->GetNEntriesProcessed ());
309318
310- auto xPtr = std::make_shared<float >();
311- x.BindRawPtr (xPtr.get ());
319+ auto zPtr = std::make_shared<float >();
320+ z.BindRawPtr (zPtr.get ());
321+ auto aPtr = std::make_shared<float >();
322+ strct_a.BindRawPtr (aPtr.get ());
312323
313324 for (auto idx : *proc) {
314- EXPECT_EQ (idx + 1 + 15 , proc->GetNEntriesProcessed ());
325+ EXPECT_EQ (idx + 1 + 20 , proc->GetNEntriesProcessed ());
315326 EXPECT_EQ (idx, proc->GetCurrentEntryNumber ());
316- EXPECT_EQ (*i, proc->GetCurrentEntryNumber () % 5 );
317- EXPECT_EQ (static_cast <float >(*i), *x);
318- EXPECT_EQ (x.GetPtr ().get (), xPtr.get ());
327+
328+ if ((idx >= 5 && idx < 10 ) || idx >= 15 ) {
329+ EXPECT_EQ (*i, 4 - idx % 5 );
330+ EXPECT_EQ (*z, (4 - idx % 5 ) * 3 .f );
331+ } else {
332+ EXPECT_EQ (*i, idx % 5 );
333+ EXPECT_EQ (*z, (idx % 5 ) * 2 .f );
334+ }
335+
336+ EXPECT_EQ (*strct_a, *z);
337+ EXPECT_EQ (z.GetPtr ().get (), zPtr.get ());
338+ EXPECT_EQ (strct_a.GetPtr ().get (), aPtr.get ());
319339 }
320- EXPECT_EQ (30 , proc->GetNEntriesProcessed ());
340+ EXPECT_EQ (40 , proc->GetNEntriesProcessed ());
321341}
322342
323343TEST_F (RNTupleProcessorTest, ChainedJoin)
0 commit comments