Chris@1086: 
Chris@1086: #ifndef TEST_COMPARES_H
Chris@1086: #define TEST_COMPARES_H
Chris@1086: 
Chris@1086: // These macros are used for comparing generated results, and they
Chris@1086: // aren't always going to be exact. Adding 0.1 to each value gives
Chris@1086: // us a little more fuzz in qFuzzyCompare (which ultimately does
Chris@1086: // the comparison).
Chris@1086: 
Chris@1086: #define COMPARE_ZERO(a) \
Chris@1086:     QCOMPARE(a + 0.1, 0.1)
Chris@1086: 
Chris@1086: #define COMPARE_ZERO_F(a) \
Chris@1086:     QCOMPARE(a + 0.1f, 0.1f)
Chris@1086: 
Chris@1086: #define COMPARE_FUZZIER(a, b) \
Chris@1086:     QCOMPARE(a + 0.1, b + 0.1)
Chris@1086: 
Chris@1086: #define COMPARE_FUZZIER_F(a, b) \
Chris@1086:     QCOMPARE(a + 0.1f, b + 0.1f)
Chris@1086: 
Chris@1086: #define COMPARE_ALL_TO(a, n) \
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER(a[cmp_i], n); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #define COMPARE_ALL(a, b)						\
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER(a[cmp_i], b[cmp_i]); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #define COMPARE_SCALED(a, b, s)						\
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER(a[cmp_i] / s, b[cmp_i]); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #define COMPARE_ALL_TO_F(a, n) \
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER_F(a[cmp_i], n); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #define COMPARE_ALL_F(a, b)						\
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER_F(a[cmp_i], b[cmp_i]); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #define COMPARE_SCALED_F(a, b, s)						\
Chris@1086:     for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
Chris@1086:         COMPARE_FUZZIER_F(a[cmp_i] / s, b[cmp_i]); \
Chris@1086:     }
Chris@1086: 
Chris@1086: #endif