mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
tests: Introduce assert_that().
This allows us to put a bug_if() or todo_if() in the front of functions that check other conditions not directly related to the actual test. assert_that() is similar to ok(). The main difference is that it ignores bug_if() and todo_if(). Signed-off-by: Józef Kucia <jkucia@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
committed by
Alexandre Julliard
parent
b0c8561cff
commit
6c141d7457
@ -40,10 +40,26 @@ static void vkd3d_test_end_todo(void);
|
||||
static const char *vkd3d_test_name = #name; \
|
||||
static void vkd3d_test_main(int argc, char **argv)
|
||||
|
||||
/*
|
||||
* Use assert_that() for conditions that should always be true.
|
||||
* todo_if() and bug_if() do not influence assert_that().
|
||||
*/
|
||||
#define assert_that assert_that_(__LINE__)
|
||||
|
||||
#define ok ok_(__LINE__)
|
||||
|
||||
#define skip skip_(__LINE__)
|
||||
|
||||
#define trace trace_(__LINE__)
|
||||
|
||||
#define assert_that_(line) \
|
||||
do { \
|
||||
unsigned int vkd3d_line = line; \
|
||||
VKD3D_TEST_ASSERT_THAT
|
||||
|
||||
#define VKD3D_TEST_ASSERT_THAT(args...) \
|
||||
vkd3d_test_assert_that(vkd3d_line, args); } while (0)
|
||||
|
||||
#define ok_(line) \
|
||||
do { \
|
||||
unsigned int vkd3d_line = line; \
|
||||
@ -116,6 +132,33 @@ broken(bool condition)
|
||||
return condition && vkd3d_test_platform_is_windows();
|
||||
}
|
||||
|
||||
static void
|
||||
vkd3d_test_check_assert_that(unsigned int line, bool result, const char *fmt, va_list args)
|
||||
{
|
||||
if (result)
|
||||
{
|
||||
InterlockedIncrement(&vkd3d_test_state.success_count);
|
||||
if (vkd3d_test_state.debug_level > 1)
|
||||
printf("%s:%d%s: Test succeeded.\n", vkd3d_test_name, line, vkd3d_test_state.context);
|
||||
}
|
||||
else
|
||||
{
|
||||
InterlockedIncrement(&vkd3d_test_state.failure_count);
|
||||
printf("%s:%d%s: Test failed: ", vkd3d_test_name, line, vkd3d_test_state.context);
|
||||
vprintf(fmt, args);
|
||||
}
|
||||
}
|
||||
|
||||
static void VKD3D_PRINTF_FUNC(3, 4) VKD3D_UNUSED
|
||||
vkd3d_test_assert_that(unsigned int line, bool result, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
vkd3d_test_check_assert_that(line, result, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void
|
||||
vkd3d_test_check_ok(unsigned int line, bool result, const char *fmt, va_list args)
|
||||
{
|
||||
@ -147,17 +190,9 @@ vkd3d_test_check_ok(unsigned int line, bool result, const char *fmt, va_list arg
|
||||
}
|
||||
vprintf(fmt, args);
|
||||
}
|
||||
else if (result)
|
||||
{
|
||||
InterlockedIncrement(&vkd3d_test_state.success_count);
|
||||
if (vkd3d_test_state.debug_level > 1)
|
||||
printf("%s:%d%s: Test succeeded.\n", vkd3d_test_name, line, vkd3d_test_state.context);
|
||||
}
|
||||
else
|
||||
{
|
||||
InterlockedIncrement(&vkd3d_test_state.failure_count);
|
||||
printf("%s:%d%s: Test failed: ", vkd3d_test_name, line, vkd3d_test_state.context);
|
||||
vprintf(fmt, args);
|
||||
vkd3d_test_check_assert_that(line, result, fmt, args);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user