Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 66 additions & 1 deletion tree/tree/test/TChainRegressions.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,78 @@

class TTreeCache;

// https://its.cern.ch/jira/browse/ROOT-7973
TEST(TChain, WrongCacheReadTwoTrees)
{
const auto treename1 = "tree1";
const auto treename2 = "tree2";
const auto filename1 = "tchain7973_file1.root";
const auto filename2 = "tchain7973_file2.root";
{
TFile f(filename1, "RECREATE");
TTree t1(treename1, treename1);
int var = 0;
t1.Branch("bInt", &var);
var = 1;
t1.Fill();
TTree t2(treename2, treename2);
double var2 = 0.0;
t2.Branch("bDouble", &var2);
var2 = 2.0;
t2.Fill();
f.Write();
f.Close();
}
{
TFile f(filename2, "RECREATE");
TTree t1(treename1, treename1);
int var = 0;
t1.Branch("bInt", &var);
var = 3;
t1.Fill();
f.Write();
f.Close();
}
{
TChain chain(treename1);
chain.AddFile(filename1);
chain.AddFile(filename2);
int var = 0;
chain.SetBranchAddress("bInt", &var);

// first entry in first file in chain
Long64_t entry = 0;
Long64_t treeEntry = chain.LoadTree(entry);
EXPECT_EQ(treeEntry, 0);
EXPECT_NE(chain.GetEntry(entry), 0);
EXPECT_EQ(var, 1);

// read another tree from the same file
TFile *f1 = chain.GetTree()->GetCurrentFile();
TTree *t2 = f1->Get<TTree>("tree2");
double var2 = 0.0;
t2->SetBranchAddress("bDouble", &var2);
EXPECT_NE(t2->GetEntry(0), 0);
EXPECT_FLOAT_EQ(var2, 2.);

// first entry in second file in chain
Long64_t entry2 = 1;
Long64_t treeEntry2 = chain.LoadTree(entry2);
EXPECT_EQ(treeEntry2, 0);
EXPECT_NE(chain.GetEntry(entry2), 0);
EXPECT_EQ(var, 3);
}
gSystem->Unlink(filename1);
gSystem->Unlink(filename2);
}

// ROOT-10672
TEST(TChain, GetReadCacheBug)
{
const auto treename = "tree";
const auto filename = "tchain_getreadcachebug.root";
{
TFile f(filename, "recreate");
TFile f(filename, "RECREATE");
ASSERT_FALSE(f.IsZombie());
TTree t(treename, treename);
t.Fill();
Expand Down
Loading