@@ -609,88 +609,6 @@ TEST(RNTupleDescriptor, Clone)
609609 EXPECT_EQ (desc, clone);
610610}
611611
612- TEST (RNTupleDescriptor, BuildStreamerInfos)
613- {
614- auto fnBuildStreamerInfosOf = [](const RFieldBase &field) -> RNTupleSerializer::StreamerInfoMap_t {
615- RNTupleDescriptorBuilder descBuilder;
616- descBuilder.SetNTuple (" test" , " " );
617- descBuilder.AddField (
618- RFieldDescriptorBuilder ().FieldId (0 ).Structure (ROOT::ENTupleStructure::kRecord ).MakeDescriptor ().Unwrap ());
619- auto fieldBuilder = RFieldDescriptorBuilder::FromField (field);
620- descBuilder.AddField (fieldBuilder.FieldId (1 ).MakeDescriptor ().Unwrap ());
621- descBuilder.AddFieldLink (0 , 1 );
622- int i = 2 ;
623- // In this test, we only support field hierarchies up to 2 levels
624- for (const auto &child : field.GetConstSubfields ()) {
625- fieldBuilder = RFieldDescriptorBuilder::FromField (*child);
626- descBuilder.AddField (fieldBuilder.FieldId (i).MakeDescriptor ().Unwrap ());
627- descBuilder.AddFieldLink (1 , i);
628- const auto childId = i;
629- i++;
630- for (const auto &grandChild : child->GetConstSubfields ()) {
631- fieldBuilder = RFieldDescriptorBuilder::FromField (*grandChild);
632- descBuilder.AddField (fieldBuilder.FieldId (i).MakeDescriptor ().Unwrap ());
633- descBuilder.AddFieldLink (childId, i);
634- i++;
635- }
636- }
637- return descBuilder.BuildStreamerInfos ();
638- };
639-
640- RNTupleSerializer::StreamerInfoMap_t streamerInfoMap;
641-
642- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " float" ).Unwrap ());
643- EXPECT_TRUE (streamerInfoMap.empty ());
644-
645- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::vector<float>" ).Unwrap ());
646- EXPECT_TRUE (streamerInfoMap.empty ());
647-
648- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::pair<float, float>" ).Unwrap ());
649- EXPECT_TRUE (streamerInfoMap.empty ());
650-
651- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::map<int, float>" ).Unwrap ());
652- EXPECT_TRUE (streamerInfoMap.empty ());
653-
654- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::unordered_map<int, float>" ).Unwrap ());
655- EXPECT_TRUE (streamerInfoMap.empty ());
656-
657- std::vector<std::unique_ptr<RFieldBase>> itemFields;
658- streamerInfoMap = fnBuildStreamerInfosOf (ROOT::RRecordField (" f" , std::move (itemFields)));
659- EXPECT_TRUE (streamerInfoMap.empty ());
660-
661- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " CustomStruct" ).Unwrap ());
662- EXPECT_EQ (1u , streamerInfoMap.size ());
663- EXPECT_STREQ (" CustomStruct" , streamerInfoMap.begin ()->second ->GetName ());
664-
665- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::vector<CustomStruct>" ).Unwrap ());
666- EXPECT_EQ (1u , streamerInfoMap.size ());
667- EXPECT_STREQ (" CustomStruct" , streamerInfoMap.begin ()->second ->GetName ());
668-
669- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::map<int, CustomStruct>" ).Unwrap ());
670- EXPECT_EQ (1u , streamerInfoMap.size ());
671- EXPECT_STREQ (" CustomStruct" , streamerInfoMap.begin ()->second ->GetName ());
672-
673- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " DerivedA" ).Unwrap ());
674- EXPECT_EQ (2u , streamerInfoMap.size ());
675- std::vector<std::string> typeNames;
676- for (const auto &[_, si] : streamerInfoMap) {
677- typeNames.emplace_back (si->GetName ());
678- }
679- std::sort (typeNames.begin (), typeNames.end ());
680- EXPECT_STREQ (" CustomStruct" , typeNames[0 ].c_str ());
681- EXPECT_STREQ (" DerivedA" , typeNames[1 ].c_str ());
682-
683- streamerInfoMap = fnBuildStreamerInfosOf (*RFieldBase::Create (" f" , " std::pair<CustomStruct, DerivedA>" ).Unwrap ());
684- EXPECT_EQ (2u , streamerInfoMap.size ());
685- typeNames.clear ();
686- for (const auto &[_, si] : streamerInfoMap) {
687- typeNames.emplace_back (si->GetName ());
688- }
689- std::sort (typeNames.begin (), typeNames.end ());
690- EXPECT_STREQ (" CustomStruct" , typeNames[0 ].c_str ());
691- EXPECT_STREQ (" DerivedA" , typeNames[1 ].c_str ());
692- }
693-
694612TEST (RNTupleDescriptor, CloneSchema)
695613{
696614 FileRaii fileGuard (" test_ntuple_desc_cloneschema.root" );
0 commit comments