X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fcomparison.hpp;h=c67bc33f1a04b2ebad0fb5a7f91de402b4340036;hb=dbc62573e1a6dc8cbcc97d0898e8615b0916d6ab;hp=2a00284fbddef1a881feaf475c013d02ae72ecc6;hpb=9139975f5fe7895259645117b1e0e9a6cb9c27cc;p=awesomized%2Flibmemcached diff --git a/libtest/comparison.hpp b/libtest/comparison.hpp index 2a00284f..c67bc33f 100644 --- a/libtest/comparison.hpp +++ b/libtest/comparison.hpp @@ -41,6 +41,7 @@ #if defined(HAVE_LIBMEMCACHED) && HAVE_LIBMEMCACHED #include #include +#include #endif #if defined(HAVE_LIBGEARMAN) && HAVE_LIBGEARMAN @@ -50,20 +51,23 @@ namespace libtest { LIBTEST_API -bool gdb_is_caller(void); +bool jenkins_is_caller(void); LIBTEST_API -bool valgrind_is_caller(void); +bool gdb_is_caller(void); LIBTEST_API bool _in_valgrind(const char *file, int line, const char *func); -template -bool _compare_truth_hint(const char *file, int line, const char *func, T_comparable __expected, const char *assertation_label, T_hint __hint) +LIBTEST_API +bool helgrind_is_caller(void); + +template +bool _compare_truth(const char *file, int line, const char *func, T_comparable __expected, const char *assertation_label) { if (__expected == false) { - libtest::stream::make_cerr(file, line, func) << "Assertation \"" << assertation_label << "\" failed, hint: " << __hint; + libtest::stream::make_cerr(file, line, func) << "Assertation \"" << assertation_label << "\""; return false; } @@ -86,12 +90,23 @@ bool _compare(const char *file, int line, const char *func, const T1_comparable& return true; } -template -bool _compare_zero(const char *file, int line, const char *func, T_comparable __actual) +template +bool _compare_strcmp(const char *file, int line, const char *func, const T1_comparable& __expected, const T2_comparable& __actual) { - if (T_comparable(0) != __actual) + if (__expected == NULL) { - libtest::stream::make_cerr(file, line, func) << "Expected 0 got \"" << __actual << "\""; + FATAL("Expected value was NULL, programmer error"); + } + + if (__actual == NULL) + { + libtest::stream::make_cerr(file, line, func) << "Expected " << __expected << " but got NULL"; + return false; + } + + if (strncmp(__expected, __actual, strlen(__expected))) + { + libtest::stream::make_cerr(file, line, func) << "Expected " << __expected << " passed \"" << __actual << "\""; return false; } @@ -99,25 +114,25 @@ bool _compare_zero(const char *file, int line, const char *func, T_comparable __ } template -bool _truth(const char *file, int line, const char *func, T_comparable __truth) +bool _compare_zero(const char *file, int line, const char *func, T_comparable __actual) { - if (bool(__truth)) + if (T_comparable(0) != __actual) { - libtest::stream::make_cerr(file, line, func) << "Assertion failed for " << func << "() with \"" << __truth << "\""; + libtest::stream::make_cerr(file, line, func) << "Expected 0 got \"" << __actual << "\""; return false; } return true; } -template -bool _compare_hint(const char *file, int line, const char *func, T1_comparable __expected, T2_comparable __actual, T_hint __hint, bool io_error= true) +template +bool _ne_compare(const char *file, int line, const char *func, T1_comparable __expected, T2_comparable __actual, bool io_error= true) { - if (__expected != __actual) + if (__expected == __actual) { if (io_error) { - libtest::stream::make_cerr(file, line, func) << "Expected \"" << __expected << "\" got \"" << __actual << "\"" << " Additionally: \"" << __hint << "\""; + libtest::stream::make_cerr(file, line, func) << "Expected \"" << __expected << "\" got \"" << __actual << "\""; } return false; @@ -126,20 +141,20 @@ bool _compare_hint(const char *file, int line, const char *func, T1_comparable _ return true; } -template -bool _ne_compare_hint(const char *file, int line, const char *func, T1_comparable __expected, T2_comparable __actual, T_hint __hint, bool io_error= true) +template +bool _assert_truth(const char *file, int line, const char *func, T_comparable __truth, T_expression_string __expression, const char* __explain= NULL) { - if (__expected == __actual) + if (__truth) { - if (io_error) - { - libtest::stream::make_cerr(file, line, func) << "Expected \"" << __expected << "\" got \"" << __actual << "\"" << " Additionally: \"" << __hint << "\""; - } + return true; + } - return false; + if (__explain) + { + libtest::stream::make_cerr(file, line, func) << "Assertion \"" << __expression << "\" warning:" << __explain; } - return true; + return false; } } // namespace libtest