annotate SDL3/SDL_test_assert.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * Assertion functions of SDL test framework.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * This code is a part of the SDL test library, not the main SDL library.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * Assert API for test code and test cases
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #ifndef SDL_test_assert_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #define SDL_test_assert_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 /* Fails the assert. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 #define ASSERT_FAIL 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 /* Passes the assert. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 #define ASSERT_PASS 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 * Assert that logs and break execution flow on failures.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * \param assertDescription Message to log with the assert describing it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 void SDLCALL SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 * Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 * \param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 * \param assertDescription Message to log with the assert describing it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 * \returns the assertCondition so it can be used to externally to break execution flow if desired.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 int SDLCALL SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 * Explicitly pass without checking an assertion condition. Updates assertion counter.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 * \param assertDescription Message to log with the assert describing it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 void SDLCALL SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 * Resets the assert summary counters to zero.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 void SDLCALL SDLTest_ResetAssertSummary(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 * Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 void SDLCALL SDLTest_LogAssertSummary(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 * Converts the current assert summary state to a test result.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 * \returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 int SDLCALL SDLTest_AssertSummaryToTestResult(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 #endif /* SDL_test_assert_h_ */