Skip to content

Commit ef9e91f

Browse files
committed
[hist] Extend testing of RHist{,Engine} constructors
1 parent f4a7d74 commit ef9e91f

File tree

2 files changed

+39
-12
lines changed

2 files changed

+39
-12
lines changed

hist/histv7/test/hist_engine.cxx

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <array>
44
#include <stdexcept>
55
#include <type_traits>
6+
#include <utility>
67
#include <variant>
78
#include <vector>
89

@@ -23,27 +24,41 @@ TEST(RHistEngine, Constructor)
2324
const std::vector<std::string> categories = {"a", "b", "c"};
2425
const RCategoricalAxis categoricalAxis(categories);
2526

26-
RHistEngine<int> engine({regularAxis, variableBinAxis, categoricalAxis});
27+
// The most generic constructor takes a vector of axis objects.
28+
const std::vector<RAxisVariant> axes = {regularAxis, variableBinAxis, categoricalAxis};
29+
RHistEngine<int> engine(axes);
2730
EXPECT_EQ(engine.GetNDimensions(), 3);
28-
const auto &axes = engine.GetAxes();
29-
ASSERT_EQ(axes.size(), 3);
30-
EXPECT_EQ(axes[0].index(), 0);
31-
EXPECT_EQ(axes[1].index(), 1);
32-
EXPECT_EQ(axes[2].index(), 2);
33-
EXPECT_TRUE(std::get_if<RRegularAxis>(&axes[0]) != nullptr);
34-
EXPECT_TRUE(std::get_if<RVariableBinAxis>(&axes[1]) != nullptr);
35-
EXPECT_TRUE(std::get_if<RCategoricalAxis>(&axes[2]) != nullptr);
36-
37-
// Both axes include underflow and overflow bins.
31+
{
32+
const auto &engineAxes = engine.GetAxes();
33+
ASSERT_EQ(engineAxes.size(), 3);
34+
EXPECT_EQ(engineAxes[0].index(), 0);
35+
EXPECT_EQ(engineAxes[1].index(), 1);
36+
EXPECT_EQ(engineAxes[2].index(), 2);
37+
EXPECT_TRUE(std::get_if<RRegularAxis>(&engineAxes[0]) != nullptr);
38+
EXPECT_TRUE(std::get_if<RVariableBinAxis>(&engineAxes[1]) != nullptr);
39+
EXPECT_TRUE(std::get_if<RCategoricalAxis>(&engineAxes[2]) != nullptr);
40+
}
41+
42+
// All axes include underflow and overflow bins.
3843
EXPECT_EQ(engine.GetTotalNBins(), (BinsX + 2) * (BinsY + 2) * (categories.size() + 1));
3944

45+
// Test other constructors, including move-assignment.
4046
engine = RHistEngine<int>(BinsX, {0, BinsX});
4147
ASSERT_EQ(engine.GetNDimensions(), 1);
4248
auto *regular = std::get_if<RRegularAxis>(&engine.GetAxes()[0]);
4349
ASSERT_TRUE(regular != nullptr);
4450
EXPECT_EQ(regular->GetNNormalBins(), BinsX);
4551
EXPECT_EQ(regular->GetLow(), 0);
4652
EXPECT_EQ(regular->GetHigh(), BinsX);
53+
// std::make_pair will take the types of the arguments, std::size_t in this case.
54+
engine = RHistEngine<int>(BinsX, std::make_pair(0, BinsX));
55+
EXPECT_EQ(engine.GetNDimensions(), 1);
56+
57+
// Brace-enclosed initializer list
58+
engine = RHistEngine<int>({variableBinAxis});
59+
EXPECT_EQ(engine.GetNDimensions(), 1);
60+
engine = RHistEngine<int>({variableBinAxis, categoricalAxis});
61+
EXPECT_EQ(engine.GetNDimensions(), 2);
4762
}
4863

4964
TEST(RHistEngine, GetBinContentInvalidNumberOfArguments)

hist/histv7/test/hist_hist.cxx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ TEST(RHist, Constructor)
1616
static constexpr std::size_t Bins = 20;
1717
const RRegularAxis regularAxis(Bins, {0, Bins});
1818

19-
RHist<int> hist({regularAxis, regularAxis});
19+
// The most generic constructor takes a vector of axis objects.
20+
const std::vector<RAxisVariant> axes = {regularAxis, regularAxis};
21+
RHist<int> hist(axes);
2022
EXPECT_EQ(hist.GetNDimensions(), 2);
2123
const auto &engine = hist.GetEngine();
2224
EXPECT_EQ(engine.GetNDimensions(), 2);
@@ -26,13 +28,23 @@ TEST(RHist, Constructor)
2628
// Both axes include underflow and overflow bins.
2729
EXPECT_EQ(hist.GetTotalNBins(), (Bins + 2) * (Bins + 2));
2830

31+
// Test other constructors, including move-assignment.
2932
hist = RHist<int>(Bins, {0, Bins});
3033
ASSERT_EQ(hist.GetNDimensions(), 1);
3134
auto *regular = std::get_if<RRegularAxis>(&hist.GetAxes()[0]);
3235
ASSERT_TRUE(regular != nullptr);
3336
EXPECT_EQ(regular->GetNNormalBins(), Bins);
3437
EXPECT_EQ(regular->GetLow(), 0);
3538
EXPECT_EQ(regular->GetHigh(), Bins);
39+
// std::make_pair will take the types of the arguments, std::size_t in this case.
40+
hist = RHist<int>(Bins, std::make_pair(0, Bins));
41+
EXPECT_EQ(hist.GetNDimensions(), 1);
42+
43+
// Brace-enclosed initializer list
44+
hist = RHist<int>({regularAxis});
45+
EXPECT_EQ(hist.GetNDimensions(), 1);
46+
hist = RHist<int>({regularAxis, regularAxis});
47+
EXPECT_EQ(hist.GetNDimensions(), 2);
3648
}
3749

3850
TEST(RHist, Add)

0 commit comments

Comments
 (0)