testautomation_clipboard.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. /**
  2. * New/updated tests: aschiffler at ferzkopp dot net
  3. */
  4. #include <SDL3/SDL.h>
  5. #include <SDL3/SDL_test.h>
  6. /* ================= Test Case Implementation ================== */
  7. /* Test case functions */
  8. /**
  9. * \brief Check call to SDL_HasClipboardText
  10. *
  11. * \sa
  12. * http://wiki.libsdl.org/SDL_HasClipboardText
  13. */
  14. int clipboard_testHasClipboardText(void *arg)
  15. {
  16. SDL_HasClipboardText();
  17. SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
  18. return TEST_COMPLETED;
  19. }
  20. /**
  21. * \brief Check call to SDL_HasPrimarySelectionText
  22. *
  23. * \sa
  24. * http://wiki.libsdl.org/SDL_HasPrimarySelectionText
  25. */
  26. int clipboard_testHasPrimarySelectionText(void *arg)
  27. {
  28. SDL_HasPrimarySelectionText();
  29. SDLTest_AssertPass("Call to SDL_HasPrimarySelectionText succeeded");
  30. return TEST_COMPLETED;
  31. }
  32. /**
  33. * \brief Check call to SDL_GetClipboardText
  34. *
  35. * \sa
  36. * http://wiki.libsdl.org/SDL_GetClipboardText
  37. */
  38. int clipboard_testGetClipboardText(void *arg)
  39. {
  40. char *charResult;
  41. charResult = SDL_GetClipboardText();
  42. SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
  43. SDL_free(charResult);
  44. return TEST_COMPLETED;
  45. }
  46. /**
  47. * \brief Check call to SDL_GetPrimarySelectionText
  48. *
  49. * \sa
  50. * http://wiki.libsdl.org/SDL_GetPrimarySelectionText
  51. */
  52. int clipboard_testGetPrimarySelectionText(void *arg)
  53. {
  54. char *charResult;
  55. charResult = SDL_GetPrimarySelectionText();
  56. SDLTest_AssertPass("Call to SDL_GetPrimarySelectionText succeeded");
  57. SDL_free(charResult);
  58. return TEST_COMPLETED;
  59. }
  60. /**
  61. * \brief Check call to SDL_SetClipboardText
  62. * \sa
  63. * http://wiki.libsdl.org/SDL_SetClipboardText
  64. */
  65. int clipboard_testSetClipboardText(void *arg)
  66. {
  67. char *textRef = SDLTest_RandomAsciiString();
  68. char *text = SDL_strdup(textRef);
  69. int result;
  70. result = SDL_SetClipboardText((const char *)text);
  71. SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded");
  72. SDLTest_AssertCheck(
  73. result == 0,
  74. "Validate SDL_SetClipboardText result, expected 0, got %i",
  75. result);
  76. SDLTest_AssertCheck(
  77. SDL_strcmp(textRef, text) == 0,
  78. "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'",
  79. textRef, text);
  80. /* Cleanup */
  81. SDL_free(textRef);
  82. SDL_free(text);
  83. return TEST_COMPLETED;
  84. }
  85. /**
  86. * \brief Check call to SDL_SetPrimarySelectionText
  87. * \sa
  88. * http://wiki.libsdl.org/SDL_SetPrimarySelectionText
  89. */
  90. int clipboard_testSetPrimarySelectionText(void *arg)
  91. {
  92. char *textRef = SDLTest_RandomAsciiString();
  93. char *text = SDL_strdup(textRef);
  94. int result;
  95. result = SDL_SetPrimarySelectionText((const char *)text);
  96. SDLTest_AssertPass("Call to SDL_SetPrimarySelectionText succeeded");
  97. SDLTest_AssertCheck(
  98. result == 0,
  99. "Validate SDL_SetPrimarySelectionText result, expected 0, got %i",
  100. result);
  101. SDLTest_AssertCheck(
  102. SDL_strcmp(textRef, text) == 0,
  103. "Verify SDL_SetPrimarySelectionText did not modify input string, expected '%s', got '%s'",
  104. textRef, text);
  105. /* Cleanup */
  106. SDL_free(textRef);
  107. SDL_free(text);
  108. return TEST_COMPLETED;
  109. }
  110. /**
  111. * \brief End-to-end test of SDL_xyzClipboardText functions
  112. * \sa
  113. * http://wiki.libsdl.org/SDL_HasClipboardText
  114. * http://wiki.libsdl.org/SDL_GetClipboardText
  115. * http://wiki.libsdl.org/SDL_SetClipboardText
  116. */
  117. int clipboard_testClipboardTextFunctions(void *arg)
  118. {
  119. char *textRef = SDLTest_RandomAsciiString();
  120. char *text = SDL_strdup(textRef);
  121. SDL_bool boolResult;
  122. int intResult;
  123. char *charResult;
  124. /* Clear clipboard text state */
  125. boolResult = SDL_HasClipboardText();
  126. SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
  127. if (boolResult == SDL_TRUE) {
  128. intResult = SDL_SetClipboardText((const char *)NULL);
  129. SDLTest_AssertPass("Call to SDL_SetClipboardText(NULL) succeeded");
  130. SDLTest_AssertCheck(
  131. intResult == 0,
  132. "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i",
  133. intResult);
  134. charResult = SDL_GetClipboardText();
  135. SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
  136. SDL_free(charResult);
  137. boolResult = SDL_HasClipboardText();
  138. SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
  139. SDLTest_AssertCheck(
  140. boolResult == SDL_FALSE,
  141. "Verify SDL_HasClipboardText returned SDL_FALSE, got %s",
  142. (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
  143. }
  144. /* Empty clipboard */
  145. charResult = SDL_GetClipboardText();
  146. SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
  147. SDLTest_Assert(
  148. charResult != NULL,
  149. "Verify SDL_GetClipboardText did not return NULL");
  150. SDLTest_AssertCheck(
  151. charResult[0] == '\0', /* NOLINT(clang-analyzer-core.NullDereference): Checked for NULL above */
  152. "Verify SDL_GetClipboardText returned string with length 0, got length %i",
  153. (int)SDL_strlen(charResult));
  154. intResult = SDL_SetClipboardText((const char *)text);
  155. SDLTest_AssertPass("Call to SDL_SetClipboardText succeeded");
  156. SDLTest_AssertCheck(
  157. intResult == 0,
  158. "Verify result from SDL_SetClipboardText(NULL), expected 0, got %i",
  159. intResult);
  160. SDLTest_AssertCheck(
  161. SDL_strcmp(textRef, text) == 0,
  162. "Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'",
  163. textRef, text);
  164. boolResult = SDL_HasClipboardText();
  165. SDLTest_AssertPass("Call to SDL_HasClipboardText succeeded");
  166. SDLTest_AssertCheck(
  167. boolResult == SDL_TRUE,
  168. "Verify SDL_HasClipboardText returned SDL_TRUE, got %s",
  169. (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
  170. SDL_free(charResult);
  171. charResult = SDL_GetClipboardText();
  172. SDLTest_AssertPass("Call to SDL_GetClipboardText succeeded");
  173. SDLTest_AssertCheck(
  174. SDL_strcmp(textRef, charResult) == 0,
  175. "Verify SDL_GetClipboardText returned correct string, expected '%s', got '%s'",
  176. textRef, charResult);
  177. /* Cleanup */
  178. SDL_free(textRef);
  179. SDL_free(text);
  180. SDL_free(charResult);
  181. return TEST_COMPLETED;
  182. }
  183. /**
  184. * \brief End-to-end test of SDL_xyzPrimarySelectionText functions
  185. * \sa
  186. * http://wiki.libsdl.org/SDL_HasPrimarySelectionText
  187. * http://wiki.libsdl.org/SDL_GetPrimarySelectionText
  188. * http://wiki.libsdl.org/SDL_SetPrimarySelectionText
  189. */
  190. int clipboard_testPrimarySelectionTextFunctions(void *arg)
  191. {
  192. char *textRef = SDLTest_RandomAsciiString();
  193. char *text = SDL_strdup(textRef);
  194. SDL_bool boolResult;
  195. int intResult;
  196. char *charResult;
  197. /* Clear primary selection text state */
  198. boolResult = SDL_HasPrimarySelectionText();
  199. SDLTest_AssertPass("Call to SDL_HasPrimarySelectionText succeeded");
  200. if (boolResult == SDL_TRUE) {
  201. intResult = SDL_SetPrimarySelectionText((const char *)NULL);
  202. SDLTest_AssertPass("Call to SDL_SetPrimarySelectionText(NULL) succeeded");
  203. SDLTest_AssertCheck(
  204. intResult == 0,
  205. "Verify result from SDL_SetPrimarySelectionText(NULL), expected 0, got %i",
  206. intResult);
  207. charResult = SDL_GetPrimarySelectionText();
  208. SDLTest_AssertPass("Call to SDL_GetPrimarySelectionText succeeded");
  209. SDL_free(charResult);
  210. boolResult = SDL_HasPrimarySelectionText();
  211. SDLTest_AssertPass("Call to SDL_HasPrimarySelectionText succeeded");
  212. SDLTest_AssertCheck(
  213. boolResult == SDL_FALSE,
  214. "Verify SDL_HasPrimarySelectionText returned SDL_FALSE, got %s",
  215. (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
  216. }
  217. /* Empty primary selection */
  218. charResult = SDL_GetPrimarySelectionText();
  219. SDLTest_AssertPass("Call to SDL_GetPrimarySelectionText succeeded");
  220. SDLTest_Assert(
  221. charResult != NULL,
  222. "Verify SDL_GetPrimarySelectionText did not return NULL");
  223. SDLTest_AssertCheck(
  224. charResult[0] == '\0', /* NOLINT(clang-analyzer-core.NullDereference): Checked for NULL above */
  225. "Verify SDL_GetPrimarySelectionText returned string with length 0, got length %i",
  226. (int)SDL_strlen(charResult));
  227. intResult = SDL_SetPrimarySelectionText((const char *)text);
  228. SDLTest_AssertPass("Call to SDL_SetPrimarySelectionText succeeded");
  229. SDLTest_AssertCheck(
  230. intResult == 0,
  231. "Verify result from SDL_SetPrimarySelectionText(NULL), expected 0, got %i",
  232. intResult);
  233. SDLTest_AssertCheck(
  234. SDL_strcmp(textRef, text) == 0,
  235. "Verify SDL_SetPrimarySelectionText did not modify input string, expected '%s', got '%s'",
  236. textRef, text);
  237. boolResult = SDL_HasPrimarySelectionText();
  238. SDLTest_AssertPass("Call to SDL_HasPrimarySelectionText succeeded");
  239. SDLTest_AssertCheck(
  240. boolResult == SDL_TRUE,
  241. "Verify SDL_HasPrimarySelectionText returned SDL_TRUE, got %s",
  242. (boolResult) ? "SDL_TRUE" : "SDL_FALSE");
  243. SDL_free(charResult);
  244. charResult = SDL_GetPrimarySelectionText();
  245. SDLTest_AssertPass("Call to SDL_GetPrimarySelectionText succeeded");
  246. SDLTest_AssertCheck(
  247. SDL_strcmp(textRef, charResult) == 0,
  248. "Verify SDL_GetPrimarySelectionText returned correct string, expected '%s', got '%s'",
  249. textRef, charResult);
  250. /* Cleanup */
  251. SDL_free(textRef);
  252. SDL_free(text);
  253. SDL_free(charResult);
  254. return TEST_COMPLETED;
  255. }
  256. /* ================= Test References ================== */
  257. /* Clipboard test cases */
  258. static const SDLTest_TestCaseReference clipboardTest1 = {
  259. (SDLTest_TestCaseFp)clipboard_testHasClipboardText, "clipboard_testHasClipboardText", "Check call to SDL_HasClipboardText", TEST_ENABLED
  260. };
  261. static const SDLTest_TestCaseReference clipboardTest2 = {
  262. (SDLTest_TestCaseFp)clipboard_testHasPrimarySelectionText, "clipboard_testHasPrimarySelectionText", "Check call to SDL_HasPrimarySelectionText", TEST_ENABLED
  263. };
  264. static const SDLTest_TestCaseReference clipboardTest3 = {
  265. (SDLTest_TestCaseFp)clipboard_testGetClipboardText, "clipboard_testGetClipboardText", "Check call to SDL_GetClipboardText", TEST_ENABLED
  266. };
  267. static const SDLTest_TestCaseReference clipboardTest4 = {
  268. (SDLTest_TestCaseFp)clipboard_testGetPrimarySelectionText, "clipboard_testGetPrimarySelectionText", "Check call to SDL_GetPrimarySelectionText", TEST_ENABLED
  269. };
  270. static const SDLTest_TestCaseReference clipboardTest5 = {
  271. (SDLTest_TestCaseFp)clipboard_testSetClipboardText, "clipboard_testSetClipboardText", "Check call to SDL_SetClipboardText", TEST_ENABLED
  272. };
  273. static const SDLTest_TestCaseReference clipboardTest6 = {
  274. (SDLTest_TestCaseFp)clipboard_testSetPrimarySelectionText, "clipboard_testSetPrimarySelectionText", "Check call to SDL_SetPrimarySelectionText", TEST_ENABLED
  275. };
  276. static const SDLTest_TestCaseReference clipboardTest7 = {
  277. (SDLTest_TestCaseFp)clipboard_testClipboardTextFunctions, "clipboard_testClipboardTextFunctions", "End-to-end test of SDL_xyzClipboardText functions", TEST_ENABLED
  278. };
  279. static const SDLTest_TestCaseReference clipboardTest8 = {
  280. (SDLTest_TestCaseFp)clipboard_testPrimarySelectionTextFunctions, "clipboard_testPrimarySelectionTextFunctions", "End-to-end test of SDL_xyzPrimarySelectionText functions", TEST_ENABLED
  281. };
  282. /* Sequence of Clipboard test cases */
  283. static const SDLTest_TestCaseReference *clipboardTests[] = {
  284. &clipboardTest1, &clipboardTest2, &clipboardTest3, &clipboardTest4, &clipboardTest5, &clipboardTest6, &clipboardTest7, &clipboardTest8, NULL
  285. };
  286. /* Clipboard test suite (global) */
  287. SDLTest_TestSuiteReference clipboardTestSuite = {
  288. "Clipboard",
  289. NULL,
  290. clipboardTests,
  291. NULL
  292. };