@@ -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+
173216TEST (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
218267TEST (TAxis, BinComputation_FPAccuracy)
0 commit comments