5
#include <SDL3/SDL_test.h>
6
#include "testautomation_suites.h"
8
static SDL_LogOutputFunction original_function;
9
static void *original_userdata;
11
static void SDLCALL TestLogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message)
13
int *message_count = (int *)userdata;
17
static void EnableTestLog(int *message_count)
20
SDL_GetLogOutputFunction(&original_function, &original_userdata);
21
SDL_SetLogOutputFunction(TestLogOutput, message_count);
24
static void DisableTestLog(void)
26
SDL_SetLogOutputFunction(original_function, original_userdata);
36
static int log_testHint(void *arg)
40
SDL_SetHint(SDL_HINT_LOGGING, NULL);
41
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, NULL)");
43
EnableTestLog(&count);
44
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
46
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
47
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
49
EnableTestLog(&count);
50
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
52
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
53
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
56
SDL_SetHint(SDL_HINT_LOGGING, "debug");
57
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"debug\")");
59
EnableTestLog(&count);
60
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
62
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
63
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
65
EnableTestLog(&count);
66
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, "test");
68
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
69
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
72
SDL_SetHint(SDL_HINT_LOGGING, "system=debug");
73
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"system=debug\")");
75
EnableTestLog(&count);
76
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
78
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
79
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
81
EnableTestLog(&count);
82
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
84
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
85
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
87
EnableTestLog(&count);
88
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
90
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
91
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
94
SDL_SetHint(SDL_HINT_LOGGING, "app=warn,system=debug,assert=quiet,*=info");
95
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"app=warn,system=debug,assert=quiet,*=info\")");
97
EnableTestLog(&count);
98
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
100
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
101
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
103
EnableTestLog(&count);
104
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
106
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
107
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
109
EnableTestLog(&count);
110
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
112
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
113
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
115
EnableTestLog(&count);
116
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
118
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
119
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
121
EnableTestLog(&count);
122
SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
124
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
125
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
127
EnableTestLog(&count);
128
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
130
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
131
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
133
EnableTestLog(&count);
134
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
136
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
137
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
141
SDL_SetHint(SDL_HINT_LOGGING, "0=4,3=2,2=0,*=3");
142
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"0=4,3=2,2=0,*=3\")");
144
EnableTestLog(&count);
145
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
147
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
148
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
150
EnableTestLog(&count);
151
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
153
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
154
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
156
EnableTestLog(&count);
157
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
159
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
160
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
162
EnableTestLog(&count);
163
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
165
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
166
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
168
EnableTestLog(&count);
169
SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
171
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
172
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
174
EnableTestLog(&count);
175
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
177
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
178
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
180
EnableTestLog(&count);
181
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
183
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
184
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
188
return TEST_COMPLETED;
194
static const SDLTest_TestCaseReference logTestHint = {
195
(SDLTest_TestCaseFp)log_testHint, "log_testHint", "Check SDL_HINT_LOGGING functionality", TEST_ENABLED
199
static const SDLTest_TestCaseReference *logTests[] = {
204
SDLTest_TestSuiteReference logTestSuite = {