Skip to content

Commit f6f297d

Browse files
committed
[hist] Test ComputeLinearizedIndex exactly on the edges
1 parent 495a50c commit f6f297d

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

hist/histv7/test/hist_regular.cxx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ TEST(RRegularAxis, ComputeLinearizedIndex)
6464
EXPECT_FALSE(linIndex.fValid);
6565
}
6666

67+
// Exactly the lower end of the axis interval
68+
{
69+
auto linIndex = axis.ComputeLinearizedIndex(0);
70+
EXPECT_EQ(linIndex.fIndex, 0);
71+
EXPECT_TRUE(linIndex.fValid);
72+
linIndex = axisNoFlowBins.ComputeLinearizedIndex(0);
73+
EXPECT_EQ(linIndex.fIndex, 0);
74+
EXPECT_TRUE(linIndex.fValid);
75+
}
76+
6777
for (std::size_t i = 0; i < Bins; i++) {
6878
auto linIndex = axis.ComputeLinearizedIndex(i + 0.5);
6979
EXPECT_EQ(linIndex.fIndex, i);
@@ -73,6 +83,16 @@ TEST(RRegularAxis, ComputeLinearizedIndex)
7383
EXPECT_TRUE(linIndex.fValid);
7484
}
7585

86+
// Exactly the upper end of the axis interval
87+
{
88+
auto linIndex = axis.ComputeLinearizedIndex(Bins);
89+
EXPECT_EQ(linIndex.fIndex, Bins + 1);
90+
EXPECT_TRUE(linIndex.fValid);
91+
linIndex = axisNoFlowBins.ComputeLinearizedIndex(Bins);
92+
EXPECT_EQ(linIndex.fIndex, Bins + 1);
93+
EXPECT_FALSE(linIndex.fValid);
94+
}
95+
7696
// Overflow
7797
static constexpr double PositiveInfinity = std::numeric_limits<double>::infinity();
7898
static constexpr double NaN = std::numeric_limits<double>::quiet_NaN();

hist/histv7/test/hist_variable.cxx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ TEST(RVariableBinAxis, ComputeLinearizedIndex)
9595
EXPECT_TRUE(linIndex.fValid);
9696
}
9797

98+
// Exactly on the bin edges
99+
for (std::size_t i = 0; i < Bins; i++) {
100+
auto linIndex = axis.ComputeLinearizedIndex(i);
101+
EXPECT_EQ(linIndex.fIndex, i);
102+
EXPECT_TRUE(linIndex.fValid);
103+
linIndex = axisNoFlowBins.ComputeLinearizedIndex(i);
104+
EXPECT_EQ(linIndex.fIndex, i);
105+
EXPECT_TRUE(linIndex.fValid);
106+
}
107+
108+
// Exactly the upper end of the axis interval
109+
{
110+
auto linIndex = axis.ComputeLinearizedIndex(Bins);
111+
EXPECT_EQ(linIndex.fIndex, Bins + 1);
112+
EXPECT_TRUE(linIndex.fValid);
113+
linIndex = axisNoFlowBins.ComputeLinearizedIndex(Bins);
114+
EXPECT_EQ(linIndex.fIndex, Bins + 1);
115+
EXPECT_FALSE(linIndex.fValid);
116+
}
117+
98118
// Overflow
99119
static constexpr double PositiveInfinity = std::numeric_limits<double>::infinity();
100120
static constexpr double NaN = std::numeric_limits<double>::quiet_NaN();

0 commit comments

Comments
 (0)