mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-03 17:24:34 +00:00 
			
		
		
		
	https://stackoverflow.com/questions/42125/warning-error-function-declaration-isnt-a-prototype In C int foo() and int foo(void) are different functions. int foo() accepts an arbitrary number of arguments, while int foo(void) accepts 0 arguments. In C++ they mean the same thing.
		
			
				
	
	
		
			210 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
 * Log test suite
 | 
						|
 */
 | 
						|
#include <SDL3/SDL.h>
 | 
						|
#include <SDL3/SDL_test.h>
 | 
						|
#include "testautomation_suites.h"
 | 
						|
 | 
						|
static SDL_LogOutputFunction original_function;
 | 
						|
static void *original_userdata;
 | 
						|
 | 
						|
static void SDLCALL 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_GetLogOutputFunction(&original_function, &original_userdata);
 | 
						|
    SDL_SetLogOutputFunction(TestLogOutput, message_count);
 | 
						|
}
 | 
						|
 | 
						|
static void DisableTestLog(void)
 | 
						|
{
 | 
						|
    SDL_SetLogOutputFunction(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
 | 
						|
};
 |