Belle II Software development
Belle2::TestHelpers Namespace Reference

Some utilities to help with writing unit tests. More...

Classes

class  LogMessageTest
 Test fixture to be able to check the contents and types of emitted log messages in detail. More...
 
class  TempDirCreator
 changes working directory into a newly created directory, and removes it (and contents) on destruction. More...
 
class  TestWithGearbox
 This class provides a test fixture managing the opening and closing of the Gearbox with the default geometry file. More...
 

Functions

template<>
bool allNear< Belle2::Helix > (const Belle2::Helix &expected, const Belle2::Helix &actual, double tolerance)
 Predicate checking that all five components of the Helix are close by a maximal error of absError.
 
bool angleNear (double expected, double actual, double tolerance)
 Predicate checking that two angular values are close to each other modulus a 2 * PI difference.
 
bool sameSign (double expected, double actual)
 Predicate checking that two values have the same sign.
 
bool isPositive (double expected)
 Predicate checking that a value is bigger than zero.
 
bool isNegative (double expected)
 Predicate checking that a value is smaller than zero.
 
template<class T >
bool allNear (const T &expected, const T &actual, double tolerance)
 Templated version of predicate checking if two combound object containing some floating point are near each other by maximum deviation.
 
template<>
bool allNear< ROOT::Math::XYZVector > (const ROOT::Math::XYZVector &expected, const ROOT::Math::XYZVector &actual, double tolerance)
 Predicate checking that all three components of XYZVector are close by a maximal error of tolerance.
 
void PrintTo (const ROOT::Math::XYZVector &vector3, ::std::ostream &output)
 Print function for the google test framework to print a ROOT::Math::XYZVector to an output stream.
 
template<>
bool allNear< TrackFindingCDC::Vector3D > (const TrackFindingCDC::Vector3D &expected, const TrackFindingCDC::Vector3D &actual, double tolerance)
 Predicate checking that all three components of Vector3D are close by a maximal error of tolerance.
 

Detailed Description

Some utilities to help with writing unit tests.

It is possible to nest these macros with others to test two things, e.g.:

EXPECT_B2ERROR(EXPECT_DOUBLE_EQ(5e3, Unit::convertValue(5e3, "nonexistingunit")));
static double convertValue(double value, const std::string &unitString)
Converts a floating point value to the standard framework unit.
Definition: UnitConst.cc:129

Function Documentation

◆ allNear()

bool allNear ( const T &  expected,
const T &  actual,
double  tolerance 
)

Templated version of predicate checking if two combound object containing some floating point are near each other by maximum deviation.

Concrete implementations can be given as simple overloads of the allNear function.

Definition at line 267 of file TestHelpers.h.

268 {
269 using std::fabs;
270 return fabs(expected - actual) < tolerance;
271 }

◆ allNear< Belle2::Helix >()

bool allNear< Belle2::Helix > ( const Belle2::Helix expected,
const Belle2::Helix actual,
double  tolerance 
)

Predicate checking that all five components of the Helix are close by a maximal error of absError.

Extends the EXPECT_ALL_NEAR/ASSERT_ALL_NEAR macro in the framework testhelpers to work for the helix class

Definition at line 41 of file Helix.cc.

44 {
45 bool d0Near = fabs(expected.getD0() - actual.getD0()) < tolerance;
46 bool phi0Near = angleNear(expected.getPhi0(), actual.getPhi0(), tolerance);
47 bool omegaNear = fabs(expected.getOmega() - actual.getOmega()) < tolerance;
48 bool z0Near = fabs(expected.getZ0() - actual.getZ0()) < tolerance;
49 bool tanLambdaNear = fabs(expected.getTanLambda() - actual.getTanLambda()) < tolerance;
50
51 return d0Near and phi0Near and omegaNear and z0Near and tanLambdaNear;
52 }
bool angleNear(double expected, double actual, double tolerance)
Predicate checking that two angular values are close to each other modulus a 2 * PI difference.
Definition: TestHelpers.cc:71

◆ angleNear()

bool angleNear ( double  expected,
double  actual,
double  tolerance 
)

Predicate checking that two angular values are close to each other modulus a 2 * PI difference.

Definition at line 71 of file TestHelpers.cc.

72{
73 return fabs(remainder(expected - actual, 2 * M_PI)) < absError;
74}

◆ isNegative()

bool isNegative ( double  expected)

Predicate checking that a value is smaller than zero.

Definition at line 90 of file TestHelpers.cc.

91{
92 return expected < 0;
93}

◆ isPositive()

bool isPositive ( double  expected)

Predicate checking that a value is bigger than zero.

Definition at line 85 of file TestHelpers.cc.

86{
87 return expected > 0;
88}

◆ PrintTo()

void PrintTo ( const ROOT::Math::XYZVector &  vector3,
::std::ostream &  output 
)

Print function for the google test framework to print a ROOT::Math::XYZVector to an output stream.

Definition at line 106 of file TestHelpers.cc.

107{
108 output
109 << "ROOT::Math::XYZVector("
110 << vector3.X() << ", "
111 << vector3.Y() << ", "
112 << vector3.Z() << ")";
113}

◆ sameSign()

bool sameSign ( double  expected,
double  actual 
)

Predicate checking that two values have the same sign.

Returns nan if any of the values is nan.

Definition at line 76 of file TestHelpers.cc.

77{
78 if (std::isnan(expected) or std::isnan(actual)) return false;
79 using boost::math::sign;
80 int expectedSign = sign(expected);
81 int actualSign = sign(actual);
82 return expectedSign == actualSign;
83}