Skip to content

Commit 55780de

Browse files
committed
[mathcore] Fix failure detection of testkdTreeBinning
The test had no failure return code, so errors would go undetected.
1 parent 8fecb0b commit 55780de

1 file changed

Lines changed: 26 additions & 16 deletions

File tree

math/mathcore/test/testkdTreeBinning.cxx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@ using std::cout;
2828
using std::cerr;
2929
using std::endl;
3030

31-
void testkdTreeBinning() {
31+
// Returns the number of detected failures (0 on success) so that the caller can
32+
// turn it into a non-zero process exit code: ROOT's Error() only prints, it does
33+
// not by itself make the test fail under ctest.
34+
int testkdTreeBinning()
35+
{
36+
37+
int nfail = 0;
3238

3339
// -----------------------------------------------------------------------------------------------
3440
// C r e a t e r a n d o m s a m p l e
@@ -83,14 +89,22 @@ void testkdTreeBinning() {
8389
std::cout << "Bin with minimum density: " << ibinMin << " density = " << kdBins->GetBinDensity(ibinMin) << " content = " << kdBins->GetBinContent(ibinMin) << std::endl;
8490
std::cout << "Bin with maximum density: " << ibinMax << " density = " << kdBins->GetBinDensity(ibinMax) << " content = " << kdBins->GetBinContent(ibinMax) << std::endl;
8591

86-
if (kdBins->GetBinContent(ibinMax) != DATASZ/NBINS)
92+
if (kdBins->GetBinContent(ibinMax) != DATASZ / NBINS) {
8793
Error("testkdTreeBinning","Wrong bin content");
94+
++nfail;
95+
}
8896

8997
// order bins by density
9098
kdBins->SortBinsByDensity(true);
9199

92-
if (kdBins->GetBinMinDensity() != 0) Error("testkdTreeBinning","Wrong minimum bin after sorting");
93-
if (kdBins->GetBinMaxDensity() != nbins-1) Error("testkdTreeBinning","Wrong maximum bin after sorting");
100+
if (kdBins->GetBinMinDensity() != 0) {
101+
Error("testkdTreeBinning", "Wrong minimum bin after sorting");
102+
++nfail;
103+
}
104+
if (kdBins->GetBinMaxDensity() != nbins - 1) {
105+
Error("testkdTreeBinning", "Wrong maximum bin after sorting");
106+
++nfail;
107+
}
94108

95109
if (showGraphics) {
96110
new TCanvas();
@@ -104,7 +118,6 @@ void testkdTreeBinning() {
104118
double point[2] = {0,0};
105119
// double binCenter[2];
106120
gRandom->SetSeed(0);
107-
bool ok = true;
108121
for (int itimes = 0; itimes < ntimes; itimes++) {
109122

110123
// generate a random point in 2D
@@ -126,12 +139,12 @@ void testkdTreeBinning() {
126139
std::cout << " point y " << point[1] << " BIN CENTER is " << binCenter[1] << " min " << binMin[1] << " max " << binMax[1] << std::endl;
127140
}
128141

129-
ok &= point[0] > binMin[0] && point[0] < binMax[0];
130-
ok &= point[1] > binMin[1] && point[1] < binMax[1];
142+
bool ok = point[0] > binMin[0] && point[0] < binMax[0] && point[1] > binMin[1] && point[1] < binMax[1];
131143
if (!ok) {
132144
Error ("testkdTreeBinning::FindBin"," Point is not in the right bin " );
133145
std::cout << " point x " << point[0] << " BIN CENTER is " << binCenter[0] << " min " << binMin[0] << " max " << binMax[0] << std::endl;
134146
std::cout << " point y " << point[1] << " BIN CENTER is " << binCenter[1] << " min " << binMin[1] << " max " << binMax[1] << std::endl;
147+
++nfail;
135148
}
136149

137150
if (itimes < 2 && showGraphics ) {
@@ -143,15 +156,13 @@ void testkdTreeBinning() {
143156
}
144157

145158
delete [] binCenter;
146-
}
147-
else
159+
} else {
148160
Error("testkdTreeBinning::FindBin"," Bin %d is not existing ",ibin);
149-
150-
161+
++nfail;
162+
}
151163
}
152164

153-
return;
154-
165+
return nfail;
155166
}
156167

157168
int main(int argc, char **argv)
@@ -180,7 +191,7 @@ int main(int argc, char **argv)
180191
if ( showGraphics )
181192
theApp = new TApplication("App",&argc,argv);
182193

183-
testkdTreeBinning();
194+
int nfail = testkdTreeBinning();
184195

185196
if ( showGraphics )
186197
{
@@ -189,7 +200,6 @@ int main(int argc, char **argv)
189200
theApp = nullptr;
190201
}
191202

192-
return 0;
193-
203+
return nfail;
194204
}
195205

0 commit comments

Comments
 (0)