Skip to content

Commit

Permalink
[ntuple] add tests for field iteration in views
Browse files Browse the repository at this point in the history
  • Loading branch information
jblomer committed Oct 28, 2024
1 parent b7d3d5d commit c14134a
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions tree/ntuple/v7/test/ntuple_view.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -396,3 +396,44 @@ TEST(RNTuple, ViewFrameworkUse)
EXPECT_LT(reader->GetMetrics().GetCounter("RNTupleReader.RPageSourceFile.nRead")->GetValueAsInt(),
reader->GetMetrics().GetCounter("RNTupleReader.RPageSourceFile.nPageRead")->GetValueAsInt());
}

TEST(RNTuple, ViewFieldIteration)
{
FileRaii fileGuard("test_ntuple_viewfielditeration.root");

{
auto model = RNTupleModel::Create();
model->MakeField<float>("pt");
model->MakeField<std::vector<float>>("vec");
model->MakeField<std::atomic<int>>("atomic");
model->MakeField<CustomEnum>("enum");
model->MakeField<std::array<CustomEnum, 2>>("array");
model->MakeField<CustomStruct>("struct");
model->MakeField<EmptyStruct>("empty");

auto writer = RNTupleWriter::Recreate(std::move(model), "ntpl", fileGuard.GetPath());
writer->Fill();
}

auto reader = RNTupleReader::Open("ntpl", fileGuard.GetPath());

auto viewPt = reader->GetView<void>("pt");
EXPECT_EQ(1u, viewPt.GetFieldRange().count());
auto viewVec = reader->GetView<void>("vec");
EXPECT_EQ(1u, viewVec.GetFieldRange().count());
auto viewAtomic = reader->GetView<void>("atomic");
EXPECT_EQ(1u, viewAtomic.GetFieldRange().count());
auto viewEnum = reader->GetView<void>("enum");
EXPECT_EQ(1u, viewEnum.GetFieldRange().count());
auto viewStruct = reader->GetView<void>("struct");
EXPECT_EQ(1u, viewStruct.GetFieldRange().count());
auto viewArray = reader->GetView<void>("array");
EXPECT_EQ(1u, viewArray.GetFieldRange().count());

try {
auto viewEmpty = reader->GetView<void>("empty");
FAIL() << "creating a view on an empty field should throw";
} catch (const RException &err) {
EXPECT_THAT(err.what(), testing::HasSubstr("field iteration over empty field is unsupported"));
}
}

0 comments on commit c14134a

Please sign in to comment.