Belle II Software  release-08-01-10
Belle2::TestHelpers Namespace Reference

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

Classes

class  TestWithGearbox
 This class provides a test fixture managing the opening and closing of the Gearbox with the default geometry file. More...
 
class  TempDirCreator
 changes working directory into a newly created directory, and removes it (and contents) on destruction. More...
 
class  LogMessageTest
 Test fixture to be able to check the contents and types of emitted log messages in detail. 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. More...
 
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. More...
 
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. More...
 
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 TVector3 &tVector3, ::std::ostream &output)
 Print function for the google test framework to print a TVector3 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 Belle2::TestHelpers::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 268 of file TestHelpers.h.

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

◆ allNear< Belle2::Helix >()

bool Belle2::TestHelpers::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 40 of file Helix.cc.

43  {
44  bool d0Near = fabs(expected.getD0() - actual.getD0()) < tolerance;
45  bool phi0Near = angleNear(expected.getPhi0(), actual.getPhi0(), tolerance);
46  bool omegaNear = fabs(expected.getOmega() - actual.getOmega()) < tolerance;
47  bool z0Near = fabs(expected.getZ0() - actual.getZ0()) < tolerance;
48  bool tanLambdaNear = fabs(expected.getTanLambda() - actual.getTanLambda()) < tolerance;
49 
50  return d0Near and phi0Near and omegaNear and z0Near and tanLambdaNear;
51  }
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:72

◆ 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 77 of file TestHelpers.cc.

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