Verify.h
Go to the documentation of this file.
1 #ifndef _tst_Verify_h_
2 #define _tst_Verify_h_
3 
15 #include <utl/Triple.h>
16 #include <utl/Test.h>
17 #include <boost/format.hpp>
18 #include <boost/tuple/tuple.hpp>
19 #include <boost/tuple/tuple_comparison.hpp>
20 #include <boost/tuple/tuple_io.hpp>
21 #include <cmath>
22 #include <iostream>
23 
24 
25 namespace tst {
26 
28 
35  template<class Predicate, typename T>
36  inline
37  bool
38  Verify(const Predicate& pred, const T& lhs, const T& rhs)
39  {
40  const bool test = pred(lhs, rhs);
41  if (!test)
42  std::cerr << "Failure: " << lhs << " not " << pred.Name() << ' '
43  << rhs << std::endl;
44  return test;
45  }
46 
47 
48  inline
49  bool
50  Verify(const utl::CloseTo& pred, const utl::Triple& lhs, const utl::Triple& rhs)
51  {
52  const bool test = pred(lhs, rhs);
53  if (!test)
54  std::cerr << "Failure: " << lhs << " not " << pred.Name() << ' '
55  << rhs << " diff: " << utl::Diff(lhs, rhs) << std::endl;
56  return test;
57  }
58 
59 
60  inline
61  bool
62  Verify(const utl::Not<utl::CloseTo>& pred, const utl::Triple& lhs, const utl::Triple& rhs)
63  {
64  const bool test = pred(lhs, rhs);
65  if (!test)
66  std::cerr << "Failure: " << lhs << " not " << pred.Name() << ' '
67  << rhs << " diff: " << utl::Diff(lhs, rhs) << std::endl;
68  return test;
69  }
70 
71 
73  template<class Predicate, typename T>
74  inline bool Verify(const T& lhs, const T& rhs)
75  { return Verify(Predicate(), lhs, rhs); }
76 
77 
79  template<class Predicate, typename T>
80  inline bool Verify(const T& lhs, const T& rhs, const double eps)
81  { return Verify(Predicate(eps), lhs, rhs); }
82 
83 
85  inline void Expected()
86  { std::cerr << "\nExpected failure: "; }
87 
88 }
89 
90 
91 #endif
static boost::format Name()
Definition: Test.h:198
Definition: Test.h:180
boost::tuple< double, double, double > Triple
Coordinate triple for easy getting or setting of coordinates.
Definition: Triple.h:15
bool Verify(const Predicate &pred, const T &lhs, const T &rhs)
Test condition by evaluating a predicate and print on failure.
Definition: Verify.h:38
void Expected()
Print `Expected&#39; for expected failures.
Definition: Verify.h:85
double eps
boost::format Name() const
Definition: Test.h:99
utl::Triple Diff(const utl::Triple &lhs, const utl::Triple &rhs)
Definition: Test.h:205
Predicate for approximate equality (for floating point)
Definition: Test.h:91

, generated on Tue Sep 26 2023.