1
0

testautomation_log.c 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. /**
  2. * Log test suite
  3. */
  4. #include <SDL3/SDL.h>
  5. #include <SDL3/SDL_test.h>
  6. #include "testautomation_suites.h"
  7. static SDL_LogOutputFunction original_function;
  8. static void *original_userdata;
  9. static void SDLCALL TestLogOutput(void *userdata, int category, SDL_LogPriority priority, const char *message)
  10. {
  11. int *message_count = (int *)userdata;
  12. ++(*message_count);
  13. }
  14. static void EnableTestLog(int *message_count)
  15. {
  16. *message_count = 0;
  17. SDL_GetLogOutputFunction(&original_function, &original_userdata);
  18. SDL_SetLogOutputFunction(TestLogOutput, message_count);
  19. }
  20. static void DisableTestLog(void)
  21. {
  22. SDL_SetLogOutputFunction(original_function, original_userdata);
  23. }
  24. /* Fixture */
  25. /* Test case functions */
  26. /**
  27. * Check SDL_HINT_LOGGING functionality
  28. */
  29. static int SDLCALL log_testHint(void *arg)
  30. {
  31. int count;
  32. SDL_SetHint(SDL_HINT_LOGGING, NULL);
  33. SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, NULL)");
  34. {
  35. EnableTestLog(&count);
  36. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
  37. DisableTestLog();
  38. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
  39. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  40. EnableTestLog(&count);
  41. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
  42. DisableTestLog();
  43. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  44. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  45. }
  46. SDL_SetHint(SDL_HINT_LOGGING, "debug");
  47. SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"debug\")");
  48. {
  49. EnableTestLog(&count);
  50. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
  51. DisableTestLog();
  52. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  53. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  54. EnableTestLog(&count);
  55. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, "test");
  56. DisableTestLog();
  57. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
  58. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  59. }
  60. SDL_SetHint(SDL_HINT_LOGGING, "system=debug");
  61. SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"system=debug\")");
  62. {
  63. EnableTestLog(&count);
  64. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "test");
  65. DisableTestLog();
  66. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  67. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  68. EnableTestLog(&count);
  69. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
  70. DisableTestLog();
  71. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  72. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  73. EnableTestLog(&count);
  74. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
  75. DisableTestLog();
  76. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
  77. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  78. }
  79. SDL_SetHint(SDL_HINT_LOGGING, "app=warn,system=debug,assert=quiet,*=info");
  80. SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"app=warn,system=debug,assert=quiet,*=info\")");
  81. {
  82. EnableTestLog(&count);
  83. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
  84. DisableTestLog();
  85. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
  86. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  87. EnableTestLog(&count);
  88. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
  89. DisableTestLog();
  90. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
  91. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  92. EnableTestLog(&count);
  93. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
  94. DisableTestLog();
  95. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  96. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  97. EnableTestLog(&count);
  98. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
  99. DisableTestLog();
  100. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
  101. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  102. EnableTestLog(&count);
  103. SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
  104. DisableTestLog();
  105. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
  106. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  107. EnableTestLog(&count);
  108. SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
  109. DisableTestLog();
  110. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
  111. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  112. EnableTestLog(&count);
  113. SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
  114. DisableTestLog();
  115. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  116. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  117. }
  118. SDL_SetHint(SDL_HINT_LOGGING, "0=5,3=3,2=0,*=4");
  119. SDLTest_AssertPass("SDL_SetHint(SDL_HINT_LOGGING, \"0=5,3=3,2=1,*=4\")");
  120. {
  121. EnableTestLog(&count);
  122. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, "test");
  123. DisableTestLog();
  124. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_WARN, \"test\")");
  125. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  126. EnableTestLog(&count);
  127. SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "test");
  128. DisableTestLog();
  129. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, \"test\")");
  130. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  131. EnableTestLog(&count);
  132. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, "test");
  133. DisableTestLog();
  134. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  135. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  136. EnableTestLog(&count);
  137. SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, "test");
  138. DisableTestLog();
  139. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_SYSTEM, SDL_LOG_PRIORITY_VERBOSE, \"test\")");
  140. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  141. EnableTestLog(&count);
  142. SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, "test");
  143. DisableTestLog();
  144. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_ASSERT, SDL_LOG_PRIORITY_CRITICAL, \"test\")");
  145. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  146. EnableTestLog(&count);
  147. SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, "test");
  148. DisableTestLog();
  149. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_INFO, \"test\")");
  150. SDLTest_AssertCheck(count == 1, "Check result value, expected: 1, got: %d", count);
  151. EnableTestLog(&count);
  152. SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, "test");
  153. DisableTestLog();
  154. SDLTest_AssertPass("SDL_LogMessage(SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_PRIORITY_DEBUG, \"test\")");
  155. SDLTest_AssertCheck(count == 0, "Check result value, expected: 0, got: %d", count);
  156. }
  157. return TEST_COMPLETED;
  158. }
  159. /* ================= Test References ================== */
  160. /* Log test cases */
  161. static const SDLTest_TestCaseReference logTestHint = {
  162. log_testHint, "log_testHint", "Check SDL_HINT_LOGGING functionality", TEST_ENABLED
  163. };
  164. /* Sequence of Log test cases */
  165. static const SDLTest_TestCaseReference *logTests[] = {
  166. &logTestHint, NULL
  167. };
  168. /* Timer test suite (global) */
  169. SDLTest_TestSuiteReference logTestSuite = {
  170. "Log",
  171. NULL,
  172. logTests,
  173. NULL
  174. };