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