Skip to content

Commit 4e4cc12

Browse files
authored
[test] try with scopes
since it works in interpreted mode but not in scripted test mode
1 parent e4b19ea commit 4e4cc12

File tree

1 file changed

+149
-124
lines changed

1 file changed

+149
-124
lines changed

io/io/test/TFileMergerTests.cxx

Lines changed: 149 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -398,128 +398,153 @@ TEST(TFileMerger, MergeSelectiveTutorial)
398398
// https://github.com/root-project/root/issues/14558
399399
TEST(TFileMerger, ImportBranches)
400400
{
401-
TTree atree("atree", "atitle");
402-
int value;
403-
atree.Branch("a", &value);
404-
value = 11;
405-
atree.Fill();
406-
TTree abtree("abtree", "abtitle");
407-
abtree.Branch("a", &value);
408-
abtree.Branch("b", &value);
409-
value = 42;
410-
abtree.Fill();
411-
412-
TTree dummy("ztree", "zeroBranches");
413-
TList treelist;
414-
415-
// Case 1 - Static: ZeroBranches + 1 entry (1 branch) + 1 entry (2 branch)
416-
treelist.Add(&dummy);
417-
treelist.Add(&atree);
418-
treelist.Add(&abtree);
419-
std::unique_ptr<TFile> file1(TFile::Open("b4716.root", "RECREATE"));
420-
auto rtree = TTree::MergeTrees(&treelist, "ImportBranches");
421-
file1->Write();
422-
ASSERT_TRUE(rtree->FindBranch("a"));
423-
EXPECT_EQ(rtree->FindBranch("a")->GetEntries(), 2);
424-
ASSERT_TRUE(rtree->FindBranch("b"));
425-
EXPECT_EQ(rtree->FindBranch("b")->GetEntries(), 2);
426-
ASSERT_TRUE(atree.FindBranch("a"));
427-
ASSERT_FALSE(atree.FindBranch("b"));
428-
ASSERT_TRUE(abtree.FindBranch("a"));
429-
ASSERT_TRUE(abtree.FindBranch("b"));
430-
EXPECT_EQ(atree.FindBranch("a")->GetEntries(), 1);
431-
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
432-
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
433-
EXPECT_EQ(dummy.FindBranch("a"), nullptr);
434-
EXPECT_EQ(dummy.FindBranch("b"), nullptr);
435-
436-
// Case 2 - this (ZeroBranches) + 1 entry (1 branch) + 1 entry (2 branch)
437-
treelist.Clear();
438-
treelist.Add(&atree);
439-
treelist.Add(&abtree);
440-
std::unique_ptr<TFile> file2(TFile::Open("c4716.root", "RECREATE"));
441-
TFileMergeInfo info2(file2.get());
442-
info2.fOptions += " ImportBranches";
443-
dummy.Merge(&treelist, &info2);
444-
file2->Write();
445-
ASSERT_TRUE(dummy.FindBranch("a"));
446-
EXPECT_EQ(dummy.FindBranch("a")->GetEntries(), 2);
447-
ASSERT_TRUE(dummy.FindBranch("b"));
448-
EXPECT_EQ(dummy.FindBranch("b")->GetEntries(), 2);
449-
EXPECT_EQ(atree.GetName(),
450-
"ztree"); // As a side effect of trees with zero branches being ignored but it's name kept since it's first
451-
// in list, the first tree with branches (name) gets ztree's name.
452-
ASSERT_TRUE(atree.FindBranch("a"));
453-
EXPECT_EQ(atree.FindBranch("a")->GetEntries(), 2); // As a side effect, the first with branches (atree) has been
454-
// modified and has now 2 entries instead of 1, and ztree's name
455-
ASSERT_TRUE(atree.FindBranch("b"));
456-
EXPECT_EQ(atree.FindBranch("b")->GetEntries(), 2); // As a side effect, the first with branches (atree) has been
457-
// modified and has now 2 entries instead of 1, and ztree's name
458-
ASSERT_TRUE(abtree.FindBranch("a"));
459-
ASSERT_TRUE(abtree.FindBranch("b"));
460-
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
461-
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
462-
463-
// Case 3 - this (0 entry / 1 branch) + 1 entry (1 branch) + 1 entry (2 branch)
464-
TTree atree_("atree", "atitle"); // Recreate original atree
465-
atree_.Branch("a", &value);
466-
value = 11;
467-
atree_.Fill();
468-
treelist.Clear();
469-
treelist.Add(&atree_);
470-
treelist.Add(&abtree);
471-
TTree a0tree("a0tree", "a0title");
472-
a0tree.Branch("a", &value);
473-
std::unique_ptr<TFile> file3(TFile::Open("d4716.root", "RECREATE"));
474-
TFileMergeInfo info3(file3.get());
475-
info3.fOptions += " ImportBranches";
476-
a0tree.Merge(&treelist, &info3);
477-
file3->Write();
478-
ASSERT_TRUE(a0tree.FindBranch("a"));
479-
EXPECT_EQ(a0tree.FindBranch("a")->GetEntries(), 2);
480-
ASSERT_TRUE(a0tree.FindBranch("b"));
481-
EXPECT_EQ(a0tree.FindBranch("b")->GetEntries(), 2);
482-
ASSERT_TRUE(atree_.FindBranch("a"));
483-
ASSERT_FALSE(atree_.FindBranch("b"));
484-
ASSERT_TRUE(abtree.FindBranch("a"));
485-
ASSERT_TRUE(abtree.FindBranch("b"));
486-
EXPECT_EQ(atree_.FindBranch("a")->GetEntries(), 1);
487-
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
488-
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
489-
490-
// Case 4 - this 1 entry (3 branch) + 1 entry (1 branch) + (0 entry / 1 branch)
491-
TTree abctree("abctree", "abctitle");
492-
abctree.Branch("a", &value);
493-
abctree.Branch("b", &value);
494-
abctree.Branch("c", &value);
495-
value = 11;
496-
abctree.Fill();
497-
TTree ctree("ctree", "ctitle");
498-
ctree.Branch("c", &value);
499-
value = 42;
500-
ctree.Fill();
501-
TTree c0tree("c0tree", "c0title");
502-
c0tree.Branch("c", &value);
503-
std::unique_ptr<TFile> file4(TFile::Open("e4716.root", "RECREATE"));
504-
TFileMergeInfo info4(file4.get());
505-
info4.fOptions += " ImportBranches";
506-
treelist.Clear();
507-
treelist.Add(&ctree);
508-
treelist.Add(&c0tree);
509-
abctree.Merge(&treelist, &info4);
510-
file4->Write();
511-
ASSERT_TRUE(abctree.FindBranch("a"));
512-
ASSERT_TRUE(abctree.FindBranch("b"));
513-
ASSERT_TRUE(abctree.FindBranch("c"));
514-
EXPECT_EQ(abctree.FindBranch("a")->GetEntries(), 2);
515-
EXPECT_EQ(abctree.FindBranch("b")->GetEntries(), 2);
516-
EXPECT_EQ(abctree.FindBranch("c")->GetEntries(), 2);
517-
ASSERT_FALSE(ctree.FindBranch("a"));
518-
ASSERT_FALSE(ctree.FindBranch("b"));
519-
ASSERT_TRUE(ctree.FindBranch("c"));
520-
EXPECT_EQ(ctree.FindBranch("c")->GetEntries(), 1);
521-
ASSERT_FALSE(c0tree.FindBranch("a"));
522-
ASSERT_FALSE(c0tree.FindBranch("b"));
523-
ASSERT_TRUE(c0tree.FindBranch("c"));
524-
EXPECT_EQ(c0tree.FindBranch("c")->GetEntries(), 0);
401+
{
402+
// Case 1 - Static: ZeroBranches + 1 entry (1 branch) + 1 entry (2 branch)
403+
TTree atree("atree", "atitle");
404+
int value;
405+
atree.Branch("a", &value);
406+
value = 11;
407+
atree.Fill();
408+
TTree abtree("abtree", "abtitle");
409+
abtree.Branch("a", &value);
410+
abtree.Branch("b", &value);
411+
value = 42;
412+
abtree.Fill();
413+
414+
TTree dummy("ztree", "zeroBranches");
415+
TList treelist;
416+
treelist.Add(&dummy);
417+
treelist.Add(&atree);
418+
treelist.Add(&abtree);
419+
std::unique_ptr<TFile> file1(TFile::Open("b4716.root", "RECREATE"));
420+
auto rtree = TTree::MergeTrees(&treelist, "ImportBranches");
421+
file1->Write();
422+
ASSERT_TRUE(rtree->FindBranch("a"));
423+
EXPECT_EQ(rtree->FindBranch("a")->GetEntries(), 2);
424+
ASSERT_TRUE(rtree->FindBranch("b"));
425+
EXPECT_EQ(rtree->FindBranch("b")->GetEntries(), 2);
426+
ASSERT_TRUE(atree.FindBranch("a"));
427+
ASSERT_FALSE(atree.FindBranch("b"));
428+
ASSERT_TRUE(abtree.FindBranch("a"));
429+
ASSERT_TRUE(abtree.FindBranch("b"));
430+
EXPECT_EQ(atree.FindBranch("a")->GetEntries(), 1);
431+
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
432+
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
433+
EXPECT_EQ(dummy.FindBranch("a"), nullptr);
434+
EXPECT_EQ(dummy.FindBranch("b"), nullptr);
435+
}
436+
{
437+
// Case 2 - this (ZeroBranches) + 1 entry (1 branch) + 1 entry (2 branch)
438+
TTree atree("atree", "atitle");
439+
int value;
440+
atree.Branch("a", &value);
441+
value = 11;
442+
atree.Fill();
443+
TTree abtree("abtree", "abtitle");
444+
abtree.Branch("a", &value);
445+
abtree.Branch("b", &value);
446+
value = 42;
447+
abtree.Fill();
448+
449+
TTree dummy("ztree", "zeroBranches");
450+
TList treelist;
451+
treelist.Add(&atree);
452+
treelist.Add(&abtree);
453+
std::unique_ptr<TFile> file2(TFile::Open("c4716.root", "RECREATE"));
454+
TFileMergeInfo info2(file2.get());
455+
info2.fOptions += " ImportBranches";
456+
dummy.Merge(&treelist, &info2);
457+
file2->Write();
458+
ASSERT_TRUE(dummy.FindBranch("a"));
459+
EXPECT_EQ(dummy.FindBranch("a")->GetEntries(), 2);
460+
ASSERT_TRUE(dummy.FindBranch("b"));
461+
EXPECT_EQ(dummy.FindBranch("b")->GetEntries(), 2);
462+
EXPECT_EQ(atree.GetName(),
463+
"ztree"); // As a side effect of trees with zero branches being ignored but it's name kept since it's first
464+
// in list, the first tree with branches (name) gets ztree's name.
465+
ASSERT_TRUE(atree.FindBranch("a"));
466+
EXPECT_EQ(atree.FindBranch("a")->GetEntries(), 2); // As a side effect, the first with branches (atree) has been
467+
// modified and has now 2 entries instead of 1, and ztree's name
468+
ASSERT_TRUE(atree.FindBranch("b"));
469+
EXPECT_EQ(atree.FindBranch("b")->GetEntries(), 2); // As a side effect, the first with branches (atree) has been
470+
// modified and has now 2 entries instead of 1, and ztree's name
471+
ASSERT_TRUE(abtree.FindBranch("a"));
472+
ASSERT_TRUE(abtree.FindBranch("b"));
473+
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
474+
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
475+
}
476+
{
477+
// Case 3 - this (0 entry / 1 branch) + 1 entry (1 branch) + 1 entry (2 branch)
478+
TTree atree("atree", "atitle");
479+
int value;
480+
atree.Branch("a", &value);
481+
value = 11;
482+
atree.Fill();
483+
TTree abtree("abtree", "abtitle");
484+
abtree.Branch("a", &value);
485+
abtree.Branch("b", &value);
486+
value = 42;
487+
abtree.Fill();
488+
489+
TList treelist;
490+
treelist.Add(&atree);
491+
treelist.Add(&abtree);
492+
TTree a0tree("a0tree", "a0title");
493+
a0tree.Branch("a", &value);
494+
std::unique_ptr<TFile> file3(TFile::Open("d4716.root", "RECREATE"));
495+
TFileMergeInfo info3(file3.get());
496+
info3.fOptions += " ImportBranches";
497+
a0tree.Merge(&treelist, &info3);
498+
file3->Write();
499+
ASSERT_TRUE(a0tree.FindBranch("a"));
500+
EXPECT_EQ(a0tree.FindBranch("a")->GetEntries(), 2);
501+
ASSERT_TRUE(a0tree.FindBranch("b"));
502+
EXPECT_EQ(a0tree.FindBranch("b")->GetEntries(), 2);
503+
ASSERT_TRUE(atree.FindBranch("a"));
504+
ASSERT_FALSE(atree.FindBranch("b"));
505+
ASSERT_TRUE(abtree.FindBranch("a"));
506+
ASSERT_TRUE(abtree.FindBranch("b"));
507+
EXPECT_EQ(atree.FindBranch("a")->GetEntries(), 1);
508+
EXPECT_EQ(abtree.FindBranch("a")->GetEntries(), 1);
509+
EXPECT_EQ(abtree.FindBranch("b")->GetEntries(), 1);
510+
}
511+
{
512+
// Case 4 - this 1 entry (3 branch) + 1 entry (1 branch) + (0 entry / 1 branch)
513+
TTree abctree("abctree", "abctitle");
514+
int value;
515+
abctree.Branch("a", &value);
516+
abctree.Branch("b", &value);
517+
abctree.Branch("c", &value);
518+
value = 11;
519+
abctree.Fill();
520+
TTree ctree("ctree", "ctitle");
521+
ctree.Branch("c", &value);
522+
value = 42;
523+
ctree.Fill();
524+
TTree c0tree("c0tree", "c0title");
525+
c0tree.Branch("c", &value);
526+
527+
std::unique_ptr<TFile> file4(TFile::Open("e4716.root", "RECREATE"));
528+
TFileMergeInfo info4(file4.get());
529+
info4.fOptions += " ImportBranches";
530+
TList treelist;
531+
treelist.Add(&ctree);
532+
treelist.Add(&c0tree);
533+
abctree.Merge(&treelist, &info4);
534+
file4->Write();
535+
ASSERT_TRUE(abctree.FindBranch("a"));
536+
ASSERT_TRUE(abctree.FindBranch("b"));
537+
ASSERT_TRUE(abctree.FindBranch("c"));
538+
EXPECT_EQ(abctree.FindBranch("a")->GetEntries(), 2);
539+
EXPECT_EQ(abctree.FindBranch("b")->GetEntries(), 2);
540+
EXPECT_EQ(abctree.FindBranch("c")->GetEntries(), 2);
541+
ASSERT_FALSE(ctree.FindBranch("a"));
542+
ASSERT_FALSE(ctree.FindBranch("b"));
543+
ASSERT_TRUE(ctree.FindBranch("c"));
544+
EXPECT_EQ(ctree.FindBranch("c")->GetEntries(), 1);
545+
ASSERT_FALSE(c0tree.FindBranch("a"));
546+
ASSERT_FALSE(c0tree.FindBranch("b"));
547+
ASSERT_TRUE(c0tree.FindBranch("c"));
548+
EXPECT_EQ(c0tree.FindBranch("c")->GetEntries(), 0);
549+
}
525550
}

0 commit comments

Comments
 (0)