mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-28 14:56:06 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			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 SDLCALL 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=5,3=3,2=0,*=4");
 | |
|     SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"0=5,3=3,2=1,*=4\")");
 | |
|     {
 | |
|         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 = {
 | |
|     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
 | |
| };
 | 
