/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details: * * Copyright (C) 2025 Dan Williams */ #ifndef MM_TEST_UTILS_H #define MM_TEST_UTILS_H #include #include /*****************************************************************************/ /* cmp = TRUE (s1 contains s2) or FALSE (s1 does not contain s2) */ #define mm_assert_strstr(s1, cmp, s2) \ G_STMT_START { \ const char *__s1 = (s1), *__s2 = (s2); \ if (strstr (__s1, __s2) == cmp) ; else \ g_assertion_message_cmpstr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ #s1 " %s " #s2, \ __s1, \ cmp ? "contains" : "does not contain", \ __s2); \ } G_STMT_END /* Asserts that err's message contains s1 */ #define mm_assert_error_str(err, s1) \ G_STMT_START { \ if (!err || !err->message || !strstr (err->message, s1)) { \ GString *gstring; \ gstring = g_string_new ("assertion failed "); \ if (err) \ g_string_append_printf (gstring, "%s (%s, %d) did not contain '%s'", \ err->message, g_quark_to_string (err->domain), err->code, s1); \ else \ g_string_append_printf (gstring, "%s is NULL", #err); \ g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, gstring->str); \ g_string_free (gstring, TRUE); \ } \ } G_STMT_END #endif /* MM_TEST_UTILS_H */