Skip to content

Commit 3b5d581

Browse files
committed
[hist] Add a test for implicit registration of histograms to TDirectory.
1 parent 17a5c9a commit 3b5d581

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

hist/hist/test/test_TH1.cxx

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
#include "TH3.h"
66
#include "TH1F.h"
77
#include "THLimitsFinder.h"
8+
#include "TDirectory.h"
9+
#include "TList.h"
10+
#include "TROOT.h"
811

912
#include <cmath>
1013
#include <cstddef>
@@ -167,6 +170,51 @@ TEST(TH1, Normalize)
167170
EXPECT_FLOAT_EQ(v2.GetMaximum(), 7.9999990);
168171
}
169172

173+
TEST(TH1, RegistrationToTDirectory_ImplicitOwnershipOn)
174+
{
175+
TH1D histo1("histo1", "Test Histogram", 10, 0, 10);
176+
auto histo2 = std::make_unique<TH1D>("histo2", "Test Histogram", 10, 0, 10);
177+
TH1D *histo3 = new TH1D("histo3", "Test Histogram", 10, 0, 10);
178+
179+
{
180+
TDirectory dir("dir", "Test Directory");
181+
histo3->SetDirectory(&dir);
182+
183+
dir.cd();
184+
185+
TH1D histo4("histo4", "Test Histogram", 10, 0, 10);
186+
auto histo5 = std::make_unique<TH1D>("histo5", "Test Histogram", 10, 0, 10);
187+
188+
EXPECT_EQ(dir.GetList()->GetSize(), 3);
189+
EXPECT_EQ(dir.Get<TH1D>("histo1"), nullptr);
190+
EXPECT_EQ(dir.Get<TH1D>("histo2"), nullptr);
191+
EXPECT_EQ(dir.Get<TH1D>("histo3"), histo3);
192+
EXPECT_EQ(dir.Get<TH1D>("histo4"), &histo4);
193+
EXPECT_EQ(dir.Get<TH1D>("histo5"), histo5.get());
194+
195+
EXPECT_EQ(histo1.GetDirectory(), gROOT);
196+
EXPECT_EQ(histo2->GetDirectory(), gROOT);
197+
EXPECT_EQ(histo3->GetDirectory(), &dir);
198+
EXPECT_EQ(histo4.GetDirectory(), &dir);
199+
EXPECT_EQ(histo5->GetDirectory(), &dir);
200+
201+
histo5.reset();
202+
203+
EXPECT_EQ(dir.GetList()->GetSize(), 2);
204+
EXPECT_EQ(dir.Get<TH1D>("histo1"), nullptr);
205+
EXPECT_EQ(dir.Get<TH1D>("histo2"), nullptr);
206+
EXPECT_EQ(dir.Get<TH1D>("histo3"), histo3);
207+
EXPECT_EQ(dir.Get<TH1D>("histo4"), &histo4);
208+
EXPECT_EQ(dir.Get<TH1D>("histo5"), nullptr);
209+
}
210+
211+
EXPECT_STREQ(histo1.GetName(), "histo1");
212+
EXPECT_STREQ(histo2->GetName(), "histo2");
213+
214+
EXPECT_EQ(histo1.GetDirectory(), gROOT);
215+
EXPECT_EQ(histo2->GetDirectory(), gROOT);
216+
}
217+
170218
TEST(TAxis, BinComputation_FPAccuracy)
171219
{
172220
// Example from 1703c54

0 commit comments

Comments
 (0)