|
5 | 5 | #include "TH3.h" |
6 | 6 | #include "TH1F.h" |
7 | 7 | #include "THLimitsFinder.h" |
| 8 | +#include "TDirectory.h" |
| 9 | +#include "TList.h" |
| 10 | +#include "TROOT.h" |
8 | 11 |
|
9 | 12 | #include <cmath> |
10 | 13 | #include <cstddef> |
@@ -167,6 +170,51 @@ TEST(TH1, Normalize) |
167 | 170 | EXPECT_FLOAT_EQ(v2.GetMaximum(), 7.9999990); |
168 | 171 | } |
169 | 172 |
|
| 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 | + |
170 | 218 | TEST(TAxis, BinComputation_FPAccuracy) |
171 | 219 | { |
172 | 220 | // Example from 1703c54 |
|
0 commit comments