88#include < vector>
99
1010#include < TBranch.h>
11+ #include < TSystem.h>
1112
1213namespace RDFInt = ROOT::Internal::RDF;
1314
@@ -237,3 +238,30 @@ TEST(RDataFrameUtils, TypeName2TypeID)
237238 EXPECT_THROW (RDFInt::TypeName2TypeID (" float *" ), std::runtime_error);
238239 EXPECT_THROW (RDFInt::TypeName2TypeID (" float &" ), std::runtime_error);
239240}
241+
242+ TEST (RDataFrameUtils, GetClusterRanges)
243+ {
244+ const std::string fname = " dataframe_interfaceAndUtils_2.root" ;
245+ const int nEntries = 1000 ;
246+ const int clusterSize = 250 ;
247+
248+ {
249+ ROOT::RDF::RSnapshotOptions opts;
250+ opts.fAutoFlush = clusterSize;
251+ ROOT::RDataFrame (nEntries)
252+ .Define (" i" , " rdfentry_" )
253+ .Snapshot (" t" , fname, {" i" }, opts);
254+ }
255+
256+ ROOT::RDataFrame df (" t" , fname);
257+ auto *lm = df.GetLoopManager ();
258+ auto ranges = RDFInt::GetClusterRanges (*lm);
259+
260+ EXPECT_EQ (ranges.size (), nEntries / clusterSize);
261+ for (size_t i = 0 ; i < ranges.size (); ++i) {
262+ EXPECT_EQ (ranges[i].first , i * clusterSize);
263+ EXPECT_EQ (ranges[i].second , (i + 1 ) * clusterSize);
264+ }
265+
266+ gSystem ->Unlink (fname.c_str ());
267+ }
0 commit comments