Skip to content

Commit 94ff78a

Browse files
hageboeckdpiparo
authored andcommitted
[hist] Add a test for explicit registration of TH1 to TDirectory.
1 parent 4aecd3c commit 94ff78a

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

hist/hist/test/test_TH1.cxx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,54 @@ TEST(TH1, Normalize)
170170
EXPECT_FLOAT_EQ(v2.GetMaximum(), 7.9999990);
171171
}
172172

173+
TEST(TH1, RegistrationToTDirectory_ImplicitOwnershipOff)
174+
{
175+
const bool oldSetting = ROOT::Experimental::ObjectAutoRegistrationEnabled();
176+
ROOT::Experimental::DisableObjectAutoRegistration();
177+
178+
TH1D histo1("histo1", "Test Histogram", 10, 0, 10);
179+
auto histo2 = std::make_unique<TH1D>("histo2", "Test Histogram", 10, 0, 10);
180+
TH1D *histo3 = new TH1D("histo3", "Test Histogram", 10, 0, 10);
181+
182+
{
183+
TDirectory dir("dir", "Test Directory");
184+
histo3->SetDirectory(&dir);
185+
186+
dir.cd();
187+
188+
TH1D histo4("histo4", "Test Histogram", 10, 0, 10);
189+
auto histo5 = std::make_unique<TH1D>("histo5", "Test Histogram", 10, 0, 10);
190+
191+
EXPECT_EQ(dir.GetList()->GetSize(), 1);
192+
EXPECT_EQ(dir.Get<TH1D>("histo3"), histo3);
193+
194+
EXPECT_EQ(histo1.GetDirectory(), nullptr);
195+
EXPECT_EQ(histo2->GetDirectory(), nullptr);
196+
EXPECT_EQ(histo3->GetDirectory(), &dir);
197+
EXPECT_EQ(histo4.GetDirectory(), nullptr);
198+
EXPECT_EQ(histo5->GetDirectory(), nullptr);
199+
200+
histo5.reset();
201+
202+
EXPECT_EQ(dir.GetList()->GetSize(), 1);
203+
EXPECT_EQ(dir.Get<TH1D>("histo3"), histo3);
204+
}
205+
206+
EXPECT_STREQ(histo1.GetName(), "histo1");
207+
EXPECT_STREQ(histo2->GetName(), "histo2");
208+
209+
EXPECT_EQ(histo1.GetDirectory(), nullptr);
210+
EXPECT_EQ(histo2->GetDirectory(), nullptr);
211+
212+
if (oldSetting)
213+
ROOT::Experimental::EnableObjectAutoRegistration();
214+
}
215+
173216
TEST(TH1, RegistrationToTDirectory_ImplicitOwnershipOn)
174217
{
218+
const bool ownershipDisabledBefore = !ROOT::Experimental::ObjectAutoRegistrationEnabled();
219+
ROOT::Experimental::EnableObjectAutoRegistration();
220+
175221
TH1D histo1("histo1", "Test Histogram", 10, 0, 10);
176222
auto histo2 = std::make_unique<TH1D>("histo2", "Test Histogram", 10, 0, 10);
177223
TH1D *histo3 = new TH1D("histo3", "Test Histogram", 10, 0, 10);
@@ -213,6 +259,9 @@ TEST(TH1, RegistrationToTDirectory_ImplicitOwnershipOn)
213259

214260
EXPECT_EQ(histo1.GetDirectory(), gROOT);
215261
EXPECT_EQ(histo2->GetDirectory(), gROOT);
262+
263+
if (ownershipDisabledBefore)
264+
ROOT::Experimental::DisableObjectAutoRegistration();
216265
}
217266

218267
TEST(TAxis, BinComputation_FPAccuracy)

0 commit comments

Comments
 (0)