@@ -52,6 +52,37 @@ TEST(RNTupleProcessor, TMemFile)
52
52
EXPECT_EQ (nEntries, proc->GetNEntriesProcessed ());
53
53
}
54
54
55
+ TEST (RNTupleProcessor, TDirectory)
56
+ {
57
+ FileRaii fileGuard (" test_ntuple_processor_tdirectoryfile.root" );
58
+ {
59
+ auto file = std::unique_ptr<TFile>(TFile::Open (fileGuard.GetPath ().c_str (), " RECREATE" ));
60
+ auto dir = std::unique_ptr<TDirectory>(file->mkdir (" a/b" ));
61
+ auto model = RNTupleModel::Create ();
62
+ auto fldX = model->MakeField <float >(" x" );
63
+ auto ntuple = RNTupleWriter::Append (std::move (model), " ntuple" , *dir);
64
+
65
+ for (unsigned i = 0 ; i < 5 ; ++i) {
66
+ *fldX = static_cast <float >(i);
67
+ ntuple->Fill ();
68
+ }
69
+ }
70
+
71
+ auto file = std::make_unique<TFile>(fileGuard.GetPath ().c_str ());
72
+ auto proc = RNTupleProcessor::Create ({" a/b/ntuple" , file.get ()});
73
+ auto x = proc->GetEntry ().GetPtr <float >(" x" );
74
+
75
+ int nEntries = 0 ;
76
+ for ([[maybe_unused]] const auto &entry : *proc) {
77
+ EXPECT_EQ (++nEntries, proc->GetNEntriesProcessed ());
78
+ EXPECT_EQ (nEntries - 1 , proc->GetCurrentEntryNumber ());
79
+
80
+ EXPECT_FLOAT_EQ (static_cast <float >(nEntries - 1 ), *x);
81
+ }
82
+ EXPECT_EQ (nEntries, 5 );
83
+ EXPECT_EQ (nEntries, proc->GetNEntriesProcessed ());
84
+ }
85
+
55
86
class RNTupleProcessorTest : public testing ::Test {
56
87
protected:
57
88
const std::array<std::string, 3 > fFileNames {" test_ntuple_processor1.root" , " test_ntuple_processor2.root" ,
0 commit comments