13 extern unsigned int iTest;
21 std::string
todoMsg(
const std::string& name);
25 void diag(
const std::string& msg);
26 void diag(
const std::ostringstream& msg);
28 void pass(
const std::string& name);
29 void fail(
const std::string& name);
32 bool ok(
bool okay,
const std::string& name);
34 bool is(
const double a,
const double b);
35 bool is(
const double a,
const double b,
const std::string& name);
36 bool is(
const float a,
const float b);
37 bool is(
const float a,
const float b,
const std::string& name);
38 bool isDiag(
const double a,
const double b,
const std::string& name);
39 bool isDiag(
const double a,
const double b);
40 bool isEpsDiag(
const TVector3&
a,
const TVector3&
b,
const double thisEps,
const std::string& name);
42 bool isEps(
const double a,
const double b,
const double thisEps,
const std::string& name);
43 bool isEpsDiag(
const double a,
const double b,
const double thisEps,
const std::string& name);
44 bool isRelEpsDiag(
const double a,
const double b,
const double thisEps,
const std::string& name);
46 bool isnot(
const double a,
const double b);
47 bool isnot(
const double a,
const double b,
const std::string& name);
48 bool isnot(
const float a,
const float b);
49 bool isnot(
const float a,
const float b,
const std::string& name);
51 #define BOTHFINITE(a,b) (isfinite(a) && isfinite(b))
52 #define BOTHNAN(a,b) (std::isnan(a) && std::isnan(b))
53 #define BOTHINFINITY(a,b) (isinf(a) == isinf(b) && isinf(a))
54 #define BOTHFINITE_OREQ(a,b) (BOTHNAN(a,b) || BOTHINFINITY(a,b) || BOTHFINITE(a,b))
55 #define SAMENONFINITE(a,b) (BOTHNAN(a,b) || BOTHINFINITY(a,b))
61 return is(a, b, std::string(
""));
66 is(
const T&
a,
const T&
b,
const std::string& name)
81 {
return isDiag(a, b, std::string(
"")); }
85 isDiag(
const T&
a,
const T&
b,
const std::string& name)
93 if (retval ==
false) {
96 s <<
", Difference: test="
103 std::cout << std::endl;
110 is(
const std::vector<T>&
a,
const std::vector<T>&
b,
const std::string& name)
113 const unsigned int na = a.size();
114 const unsigned int nb = b.size();
116 std::string nName = name + std::string(
" (vector size)");
117 if (!
is(na, nb, nName))
121 for (i = 0; i < na; ++i) {
122 if (!(a[i] == b[i])) {
128 if (retval ==
false) {
137 isDiag(
const std::vector<T>&
a,
const std::vector<T>&
b,
const std::string& name)
140 const unsigned int na = a.size();
141 const unsigned int nb = b.size();
143 std::string nName = name + std::string(
" (vector size)");
144 if (!
isDiag(na, nb, nName))
148 for (i = 0; i < na; ++i) {
149 if (!(a[i] == b[i])) {
155 if (retval ==
false) {
160 if (retval ==
false) {
161 std::ostringstream
s;
163 s <<
"Difference at index " << i
172 std::cout << std::endl;
177 bool is(
const std::vector<double>&
a,
const std::vector<double>&
b,
const std::string& name);
178 bool isDiag(
const std::vector<double>&
a,
const std::vector<double>&
b,
const std::string& name);
179 bool isEpsDiag(
const std::vector<double>&
a,
const std::vector<double>&
b,
const double thisEps,
const std::string& name);
180 bool isRelEpsDiag(
const std::vector<double>&
a,
const std::vector<double>&
b,
const double thisEps,
const std::string& name);
186 return isnot(a, b, std::string(
""));
191 isnot(
const T&
a,
const T&
b,
const std::string name)
219 if (retval ==
false) {
220 std::ostringstream
s;
221 s <<
"Unexpectectly equivalent: test='"
228 std::cout << std::endl;
235 ToDo(
const std::string reason);
std::string todoMsg(const std::string &name)
bool isnot(const double a, const double b)
bool is(const double a, const double b)
bool isnotDiag(const T &a, const T &b)
void diag(const std::string &msg)
bool isRelEpsDiag(const double a, const double b, const double thisEps, const std::string &name)
bool isEps(const double a, const double b, const double thisEps, const std::string &name)
bool fexists(const std::string &filename)
void fail(const std::string &name)
unsigned int & GetTestNo()
bool isEpsDiag(const double a, const double b, const double thisEps, const std::string &name)
ToDo(const std::string reason)
bool isDiag(const double a, const double b, const std::string &name)
void pass(const std::string &name)