Teuchos_TestingHelpers.hpp File Reference

Utilities to make writing tests easier. More...

#include "Teuchos_ScalarTraits.hpp"
#include "Teuchos_TypeNameTraits.hpp"
#include "Teuchos_FancyOStream.hpp"
Include dependency graph for Teuchos_TestingHelpers.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Teuchos::RelErrSmallNumber< hasMachineParameters, Scalar >
  More...
class  Teuchos::RelErrSmallNumber< false, Scalar >
  More...
class  Teuchos::RelErrSmallNumber< true, Scalar >
  More...

Namespaces

namespace  Teuchos

Defines

#define TEUCHOS_ECHO(statement, out)
 Echo a statement and then invoke it.
#define TEUCHOS_TEST_EQUALITY_CONST(v1, v2, out, success)
 Test that an object is equal to a given constant.
#define TEUCHOS_TEST_ASSERT(v1, out, success)   TEUCHOS_TEST_EQUALITY_CONST( v1, true, out, success )
 Assert that a give object is true.
#define TEUCHOS_TEST_EQUALITY(v1, v2, out, success)
 Test that two values are equal.
#define TEUCHOS_TEST_INEQUALITY_CONST(v1, v2, out, success)
 Test that an object is not equal to a given constant.
#define TEUCHOS_TEST_INEQUALITY(v1, v2, out, success)
 Test that two values are not equal.
#define TEUCHOS_TEST_FLOATING_EQUALITY(v1, v2, tol, out, success)
 Test if two floating point values are equal to a given tolerance.
#define TEUCHOS_TEST_ITER_EQUALITY(iter1, iter2, out, success)
 Test if two iterators are equal or not.
#define TEUCHOS_TEST_ARRAY_ELE_EQUALITY(a, i, val, printPass, out, success)
 Test that an array element value is equal to a given constant.
#define TEUCHOS_TEST_ARRAY_ELE_INEQUALITY(a, i, val, printPass, out, success)
 Test that an array element value is not equal to a given constant.
#define TEUCHOS_TEST_MATRIX_ELE_FLOATING_EQUALITY(a, i, j, val, tol, printPass, out, success)
 Test if a floating-point array element value is equal to a given constant for a given tolerance.
#define TEUCHOS_TEST_MATRIX_ELE_EQUALITY(a, i, j, val, printPass, out, success)
 Test if a matrix element value is equal to a given constant.
#define TEUCHOS_TEST_COMPARE(v1, comp, v2, out, success)
 Compare two objects using an input comparion operator.
#define TEUCHOS_TEST_THROW(code, ExceptType, out, success)
 Test that a chunk of code throws an expected exception.
#define TEUCHOS_TEST_NOTHROW(code, out, success)
 Test that a chunk of code does not throw any exceptions.

Functions

void Teuchos::updateSuccess (const bool result, bool &success)
 Update the success bool flag.
const std::string Teuchos::passfail (const bool result)
 Return "passed" for "failed".
template<class Scalar >
Scalar Teuchos::defaultSmallNumber ()
 
template<class Scalar >
ScalarTraits< Scalar >
::magnitudeType 
Teuchos::relErr (const Scalar &s1, const Scalar &s2)
 Return relative error of two scalars.
template<class Scalar >
bool Teuchos::testRelErr (const std::string &v1_name, const Scalar &v1, const std::string &v2_name, const Scalar &v2, const std::string &maxRelErr_error_name, const typename Teuchos::ScalarTraits< Scalar >::magnitudeType &maxRelErr_error, const std::string &maxRelErr_warning_name, const typename Teuchos::ScalarTraits< Scalar >::magnitudeType &maxRelErr_warning, const Ptr< std::ostream > &out)
 Compute, check and optionally print the relative error in two scalars.
template<class Array1 , class Array2 >
bool Teuchos::compareArrays (const Array1 &a1, const std::string &a1_name, const Array2 &a2, const std::string &a2_name, Teuchos::FancyOStream &out)
 Compare if two array objects are the same or not.
template<class Array1 , class Array2 , class ScalarMag >
bool Teuchos::compareFloatingArrays (const Array1 &a1, const std::string &a1_name, const Array2 &a2, const std::string &a2_name, const ScalarMag &tol, Teuchos::FancyOStream &out)
 Compare if two array objects are the same or not up to a relative floating point precision.

Detailed Description

Utilities to make writing tests easier.

Definition in file Teuchos_TestingHelpers.hpp.


Define Documentation

#define TEUCHOS_ECHO ( statement,
out   ) 
Value:
(out) << #statement ";\n"; \
  statement;

Echo a statement and then invoke it.

This macro is not complicated so take a look for yourself!

Definition at line 194 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_EQUALITY_CONST ( v1,
v2,
out,
success   ) 
Value:
{ \
    (out) << #v1" = "<<Teuchos::toString(v1)<<" == "<<Teuchos::toString(v2)<<" : "; \
    const bool l_result = (v1) == (v2); \
    (out) << Teuchos::passfail(l_result) << "\n"; \
    if (!l_result) (success) = false; \
  }

Test that an object is equal to a given constant.

This macro is not complicated so take a look for yourself!

Definition at line 204 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_ASSERT ( v1,
out,
success   )     TEUCHOS_TEST_EQUALITY_CONST( v1, true, out, success )

Assert that a give object is true.

This macro is not complicated so take a look for yourself!

Definition at line 218 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_EQUALITY ( v1,
v2,
out,
success   ) 
Value:
{ \
    (out) << #v1" = "<<Teuchos::toString(v1)<<" == "#v2" = "<<Teuchos::toString(v2)<<" : "; \
    const bool l_result = (v1) == (v2); \
    if (!l_result) (success) = false; \
    (out) << Teuchos::passfail(l_result) << "\n"; \
  }

Test that two values are equal.

This macro is not complicated so take a look for yourself!

Definition at line 228 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_INEQUALITY_CONST ( v1,
v2,
out,
success   ) 
Value:
{ \
    (out) << #v1" = "<<Teuchos::toString(v1)<<" != "<<Teuchos::toString(v2)<<" : "; \
    const bool l_result = (v1) != (v2); \
    (out) << Teuchos::passfail(l_result) << "\n"; \
    if (!l_result) (success) = false; \
  }

Test that an object is not equal to a given constant.

This macro is not complicated so take a look for yourself!

Definition at line 243 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_INEQUALITY ( v1,
v2,
out,
success   ) 
Value:
{ \
    (out) << #v1" = "<<Teuchos::toString(v1)<<" != "#v2" = "<<Teuchos::toString(v2)<<" : "; \
    const bool l_result = (v1) != (v2); \
    if (!l_result) (success) = false; \
    (out) << Teuchos::passfail(l_result) << "\n"; \
  }

Test that two values are not equal.

This macro is not complicated so take a look for yourself!

Definition at line 258 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_FLOATING_EQUALITY ( v1,
v2,
tol,
out,
success   ) 
Value:
{ \
    const bool l_result = Teuchos::testRelErr( \
      #v1, v1, #v2, v2, "tol", tol, "tol", tol, Teuchos::outArg(out) ); \
    if (!l_result) (success) = false; \
  }

Test if two floating point values are equal to a given tolerance.

This macro is not complicated so take a look for yourself!

Definition at line 273 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_ITER_EQUALITY ( iter1,
iter2,
out,
success   ) 
Value:
{ \
    (out) << #iter1" == "#iter2" =  : "; \
    const bool l_result = (iter1) == (iter2); \
    if (!l_result) (success) = false; \
    (out) << Teuchos::passfail(l_result) << "\n"; \
  }

Test if two iterators are equal or not.

This macro does not try to print the iterators so it is more portable (in terms of types).

This macro is not complicated so take a look for yourself!

Definition at line 290 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_ARRAY_ELE_EQUALITY ( a,
i,
val,
printPass,
out,
success   ) 
Value:
{ \
    const bool l_result = ( (a)[i] == (val) ); \
    if (!l_result) (success) = false; \
    if (printPass || !(l_result)) { \
      out << #a"["<<i<<"] = " << Teuchos::toString((a)[i]) << " == "#val" = " << Teuchos::toString(val) \
          << " : " << Teuchos::passfail(l_result) << "\n"; \
    } \
  }

Test that an array element value is equal to a given constant.

This macro is not complicated so take a look for yourself!

Definition at line 305 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_ARRAY_ELE_INEQUALITY ( a,
i,
val,
printPass,
out,
success   ) 
Value:
{ \
    const bool l_result = ( (a)[i] != (val) ); \
    if (!l_result) (success) = false; \
    if (printPass || !(l_result)) { \
      out << #a"["<<i<<"] = " << Teuchos::toString((a)[i]) << " != "#val" = " << Teuchos::toString(val) \
          << " : " << Teuchos::passfail(l_result) << "\n"; \
    } \
  }

Test that an array element value is not equal to a given constant.

This macro is not complicated so take a look for yourself!

Definition at line 322 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_MATRIX_ELE_FLOATING_EQUALITY ( a,
i,
j,
val,
tol,
printPass,
out,
success   ) 
Value:
{ \
    std::ostringstream a_i_str; \
    a_i_str <<#a<<"("<<i<<","<<j<<")"; \
    const bool l_result = Teuchos::testRelErr( \
      a_i_str.str(), (a)(i,j), #val, val, "tol", tol, "tol", tol, \
      (printPass) ? Teuchos::outArg(out) : Teuchos::null ); \
    if (!l_result) (success) = false; \
  }

Test if a floating-point array element value is equal to a given constant for a given tolerance.

This macro is not complicated so take a look for yourself!

Definition at line 340 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_MATRIX_ELE_EQUALITY ( a,
i,
j,
val,
printPass,
out,
success   ) 
Value:
{ \
    const bool l_result = ( (a)(i,j) == (val) ); \
    if (!l_result) (success) = false; \
    if (printPass || !(l_result)) { \
      out << #a"("<<i<<","<<j<<") = " << (a)(i,j) << " == "#val" = " << (val) \
          << " : " << Teuchos::passfail(l_result) << "\n"; \
    } \
  }

Test if a matrix element value is equal to a given constant.

This macro is not complicated so take a look for yourself!

Definition at line 357 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_COMPARE ( v1,
comp,
v2,
out,
success   ) 
Value:
{ \
    out << #v1" = "<<(v1)<<" "#comp" "#v2" = "<<(v2)<<" : "; \
    const bool l_result = (v1) comp (v2); \
    if (!l_result) (success) = false; \
    (out) << Teuchos::passfail(l_result) << "\n"; \
  }

Compare two objects using an input comparion operator.

This macro is not complicated so take a look for yourself!

Definition at line 374 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_THROW ( code,
ExceptType,
out,
success   ) 
Value:
try { \
    (out) << "Test that code {"#code";} throws " \
          <<Teuchos::TypeNameTraits<ExceptType>::name()<<": "; \
    code; \
    (success) = false; \
    (out) << "failed\n"; \
  } \
  catch (const ExceptType& except) { \
    out << "passed\n"; \
    out << "\nException message for expected exception:\n\n"; \
    { \
      Teuchos::OSTab l_tab(out); \
      out << except.what() << "\n\n"; \
    } \
  }

Test that a chunk of code throws an expected exception.

This macro is not complicated so take a look for yourself!

Definition at line 389 of file Teuchos_TestingHelpers.hpp.

#define TEUCHOS_TEST_NOTHROW ( code,
out,
success   ) 
Value:
try { \
    (out) << "Test that code {"#code";} does not throw : "; \
    code; \
    (out) << "passes\n"; \
  } \
  catch (...) { \
    (success) = false; \
    out << "failed\n"; \
  }

Test that a chunk of code does not throw any exceptions.

This macro is not complicated so take a look for yourself!

Definition at line 413 of file Teuchos_TestingHelpers.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Tue Oct 20 10:14:02 2009 for Teuchos Package Browser (Single Doxygen Collection) by  doxygen 1.6.1