Added the environment variable SDL_LOGGING to control default log output
(cherry picked from commit 12bdb2b4d0
)
This commit is contained in:
parent
6ec3f5a28e
commit
f0b8fee88f
6 changed files with 355 additions and 14 deletions
209
test/testautomation_log.c
Normal file
209
test/testautomation_log.c
Normal file
|
@ -0,0 +1,209 @@
|
|||
/**
|
||||
* Log test suite
|
||||
*/
|
||||
#include "SDL.h"
|
||||
#include "SDL_test.h"
|
||||
|
||||
|
||||
static SDL_LogOutputFunction original_function;
|
||||
static void *original_userdata;
|
||||
|
||||
static void TestLogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message)
|
||||
{
|
||||
int *message_count = (int *)userdata;
|
||||
++(*message_count);
|
||||
}
|
||||
|
||||
static void EnableTestLog(int *message_count)
|
||||
{
|
||||
*message_count = 0;
|
||||
SDL_LogGetOutputFunction(&original_function, &original_userdata);
|
||||
SDL_LogSetOutputFunction(TestLogOutput, message_count);
|
||||
}
|
||||
|
||||
static void DisableTestLog()
|
||||
{
|
||||
SDL_LogSetOutputFunction(original_function, original_userdata);
|
||||
}
|
||||
|
||||
/* Fixture */
|
||||
|
||||
/* Test case functions */
|
||||
|
||||
/**
|
||||
* Check SDL_HINT_LOGGING functionality
|
||||
*/
|
||||
static int log_testHint(void *arg)
|
||||
{
|
||||
int count;
|
||||
|
||||
SDL_SetHint(SDL_HINT_LOGGING, NULL);
|
||||
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, NULL)");
|
||||
{
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
}
|
||||
|
||||
SDL_SetHint(SDL_HINT_LOGGING, "debug");
|
||||
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"debug\")");
|
||||
{
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
}
|
||||
|
||||
SDL_SetHint(SDL_HINT_LOGGING, "system=debug");
|
||||
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"system=debug\")");
|
||||
{
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
}
|
||||
|
||||
SDL_SetHint(SDL_HINT_LOGGING, "app=warn,system=debug,assert=quiet,*=info");
|
||||
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"app=warn,system=debug,assert=quiet,*=info\")");
|
||||
{
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
}
|
||||
|
||||
SDL_SetHint(SDL_HINT_LOGGING, "0=4,3=2,2=0,*=3");
|
||||
SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"0=4,3=2,2=0,*=3\")");
|
||||
{
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
|
||||
SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
|
||||
|
||||
EnableTestLog(&count);
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
|
||||
DisableTestLog();
|
||||
SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
|
||||
SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
|
||||
|
||||
}
|
||||
|
||||
return TEST_COMPLETED;
|
||||
}
|
||||
|
||||
/* ================= Test References ================== */
|
||||
|
||||
/* Log test cases */
|
||||
static const SDLTest_TestCaseReference logTestHint = {
|
||||
(SDLTest_TestCaseFp)log_testHint, "log_testHint", "Check SDL_HINT_LOGGING functionality", TEST_ENABLED
|
||||
};
|
||||
|
||||
/* Sequence of Log test cases */
|
||||
static const SDLTest_TestCaseReference *logTests[] = {
|
||||
&logTestHint, NULL
|
||||
};
|
||||
|
||||
/* Timer test suite (global) */
|
||||
SDLTest_TestSuiteReference logTestSuite = {
|
||||
"Log",
|
||||
NULL,
|
||||
logTests,
|
||||
NULL
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue