11 #include "definitions.h" 37 #define SCR_CONTEXT_DECL const char *file_name, const char *function_name, unsigned int line_no 38 #define SCR_CONTEXT_PARAMS __FILE__, __func__, __LINE__ 44 _scrLog(SCR_CONTEXT_DECL,
const char *format, ...) SCR_EXPORT;
45 #define scrLog(...) _scrLog(SCR_CONTEXT_PARAMS, __VA_ARGS__) 48 _scrFail(SCR_CONTEXT_DECL,
const char *format, ...) SCR_EXPORT SCR_PRINTF(4) SCR_NORETURN;
52 #define scrFail(...) _scrFail(SCR_CONTEXT_PARAMS, __VA_ARGS__) 57 #define scrAssert(expr) \ 60 scrFail("Assertion failed: %s", #expr); \ 64 #define SCR_ASSERT_FUNC(func, type) \ 65 void _scrAssert##func(SCR_CONTEXT_DECL, type value1, const char *expr1, type value2, const char *expr2) 66 #define SCR_ASSERT_MACRO(func, expr1, expr2) \ 67 _scrAssert##func(SCR_CONTEXT_PARAMS, expr1, #expr1, expr2, #expr2) 69 SCR_ASSERT_FUNC(Eq, intmax_t) SCR_EXPORT;
73 #define scrAssertEq(expr1, expr2) SCR_ASSERT_MACRO(Eq, expr1, expr2) 75 SCR_ASSERT_FUNC(Ne, intmax_t) SCR_EXPORT;
79 #define scrAssertNe(expr1, expr2) SCR_ASSERT_MACRO(Ne, expr1, expr2) 81 SCR_ASSERT_FUNC(Lt, intmax_t) SCR_EXPORT;
85 #define scrAssertLt(expr1, expr2) SCR_ASSERT_MACRO(Lt, expr1, expr2) 87 SCR_ASSERT_FUNC(Le, intmax_t) SCR_EXPORT;
91 #define scrAssertLe(expr1, expr2) SCR_ASSERT_MACRO(Le, expr1, expr2) 93 SCR_ASSERT_FUNC(Gt, intmax_t) SCR_EXPORT;
97 #define scrAssertGt(expr1, expr2) SCR_ASSERT_MACRO(Gt, expr1, expr2) 99 SCR_ASSERT_FUNC(Ge, intmax_t) SCR_EXPORT;
103 #define scrAssertGe(expr1, expr2) SCR_ASSERT_MACRO(Ge, expr1, expr2) 105 SCR_ASSERT_FUNC(UnsignedEq, uintmax_t) SCR_EXPORT;
109 #define scrAssertUnsignedEq(expr1, expr2) SCR_ASSERT_MACRO(UnsignedEq, expr1, expr2) 111 SCR_ASSERT_FUNC(UnsignedNe, uintmax_t) SCR_EXPORT;
115 #define scrAssertUnsignedNe(expr1, expr2) SCR_ASSERT_MACRO(UnsignedNe, expr1, expr2) 117 SCR_ASSERT_FUNC(UnsignedLt, uintmax_t) SCR_EXPORT;
121 #define scrAssertUnsignedLt(expr1, expr2) SCR_ASSERT_MACRO(UnsignedLt, expr1, expr2) 123 SCR_ASSERT_FUNC(UnsignedLe, uintmax_t) SCR_EXPORT;
127 #define scrAssertUnsignedLe(expr1, expr2) SCR_ASSERT_MACRO(UnsignedLe, expr1, expr2) 129 SCR_ASSERT_FUNC(UnsignedGt, uintmax_t) SCR_EXPORT;
133 #define scrAssertUnsignedGt(expr1, expr2) SCR_ASSERT_MACRO(UnsignedGt, expr1, expr2) 135 SCR_ASSERT_FUNC(UnsignedGe, uintmax_t) SCR_EXPORT;
139 #define scrAssertUnsignedGe(expr1, expr2) SCR_ASSERT_MACRO(UnsignedGe, expr1, expr2) 141 SCR_ASSERT_FUNC(FloatEq,
long double) SCR_EXPORT;
145 #define scrAssertFloatEq(expr1, expr2) SCR_ASSERT_MACRO(FloatEq, expr1, expr2) 147 SCR_ASSERT_FUNC(FloatNe,
long double) SCR_EXPORT;
151 #define scrAssertFloatNe(expr1, expr2) SCR_ASSERT_MACRO(FloatNe, expr1, expr2) 153 SCR_ASSERT_FUNC(FloatLt,
long double) SCR_EXPORT;
157 #define scrAssertFloatLt(expr1, expr2) SCR_ASSERT_MACRO(FloatLt, expr1, expr2) 159 SCR_ASSERT_FUNC(FloatLe,
long double) SCR_EXPORT;
163 #define scrAssertFloatLe(expr1, expr2) SCR_ASSERT_MACRO(FloatLe, expr1, expr2) 165 SCR_ASSERT_FUNC(FloatGt,
long double) SCR_EXPORT;
169 #define scrAssertFloatGt(expr1, expr2) SCR_ASSERT_MACRO(FloatGt, expr1, expr2) 171 SCR_ASSERT_FUNC(FloatGe,
long double) SCR_EXPORT;
175 #define scrAssertFloatGe(expr1, expr2) SCR_ASSERT_MACRO(FloatGe, expr1, expr2) 177 SCR_ASSERT_FUNC(PtrEq,
const void *) SCR_EXPORT;
181 #define scrAssertPtrEq(expr1, expr2) SCR_ASSERT_MACRO(PtrEq, expr1, expr2) 183 SCR_ASSERT_FUNC(PtrNe,
const void *) SCR_EXPORT;
187 #define scrAssertPtrNe(expr1, expr2) SCR_ASSERT_MACRO(PtrNe, expr1, expr2) 189 SCR_ASSERT_FUNC(StrEq,
const char *) SCR_EXPORT;
193 #define scrAssertStrEq(expr1, expr2) SCR_ASSERT_MACRO(StrEq, expr1, expr2) 195 SCR_ASSERT_FUNC(StrNe,
const char *) SCR_EXPORT;
199 #define scrAssertStrNe(expr1, expr2) SCR_ASSERT_MACRO(StrNe, expr1, expr2) 201 SCR_ASSERT_FUNC(StrBeginsWith,
const char *) SCR_EXPORT;
205 #define scrAssertStrBeginsWith(expr1, expr2) SCR_ASSERT_MACRO(StrBeginsWith, expr1, expr2) 207 SCR_ASSERT_FUNC(StrNBeginsWith,
const char *) SCR_EXPORT;
211 #define scrAssertStrNBeginsWith(expr1, expr2) SCR_ASSERT_MACRO(StrNBeginsWith, expr1, expr2) 214 _scrAssertStrContains(SCR_CONTEXT_DECL,
const char *value1,
const char *expr1,
const char *value2,
215 const char *expr2) SCR_EXPORT;
221 #define scrAssertStrContains(expr1, expr2) \ 222 _scrAssertStrContains(SCR_CONTEXT_PARAMS, expr1, #expr1, expr2, #expr2) 224 SCR_ASSERT_FUNC(StrNContains,
const char *) SCR_EXPORT;
228 #define scrAssertStrNContains(expr1, expr2) SCR_ASSERT_MACRO(StrNContains, expr1, expr2) 230 SCR_ASSERT_FUNC(CharEq,
char) SCR_EXPORT;
234 #define scrAssertCharEq(expr1, expr2) SCR_ASSERT_MACRO(CharEq, expr1, expr2) 236 SCR_ASSERT_FUNC(CharNe,
char) SCR_EXPORT;
240 #define scrAssertCharNe(expr1, expr2) SCR_ASSERT_MACRO(CharNe, expr1, expr2) 243 _scrAssertMemEq(SCR_CONTEXT_DECL,
const void *ptr1,
const char *expr1,
const void *ptr2,
const char *expr2,
244 size_t size) SCR_EXPORT;
248 #define scrAssertMemEq(expr1, expr2, size) \ 249 _scrAssertMemEq(SCR_CONTEXT_PARAMS, expr1, #expr1, expr2, #expr2, size) void * scrGroupCtx(void) SCR_EXPORT __attribute__((pure))
Gets the group context.
void _scrLog(SCR_CONTEXT_DECL, const char *format,...) SCR_EXPORT
Logs a message.
void scrTestSkip(void) SCR_EXPORT SCR_NORETURN
Skips the current test.
void * scrPatchedFunction(const char *func_name) SCR_EXPORT SCR_NONNULL(1)
Gets the real pointer to a monkeypatched function.