testautomation_sdltest.c 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306
  1. /**
  2. * SDL_test test suite
  3. */
  4. #include <limits.h>
  5. #include <float.h>
  6. #include <SDL3/SDL.h>
  7. #include <SDL3/SDL_test.h>
  8. /* Test case functions */
  9. /* Forward declarations for internal harness functions */
  10. extern char *SDLTest_GenerateRunSeed(const int length);
  11. /**
  12. * @brief Calls to SDLTest_GenerateRunSeed()
  13. */
  14. int
  15. sdltest_generateRunSeed(void *arg)
  16. {
  17. char* result;
  18. size_t i, l;
  19. int j;
  20. for (i = 1; i <= 10; i += 3) {
  21. result = SDLTest_GenerateRunSeed((const int)i);
  22. SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
  23. SDLTest_AssertCheck(result != NULL, "Verify returned value is not NULL");
  24. if (result != NULL) {
  25. l = SDL_strlen(result);
  26. SDLTest_AssertCheck(l == i, "Verify length of returned value is %d, got: %d", (int) i, (int) l);
  27. SDL_free(result);
  28. }
  29. }
  30. /* Negative cases */
  31. for (j = -2; j <= 0; j++) {
  32. result = SDLTest_GenerateRunSeed((const int)j);
  33. SDLTest_AssertPass("Call to SDLTest_GenerateRunSeed()");
  34. SDLTest_AssertCheck(result == NULL, "Verify returned value is not NULL");
  35. }
  36. return TEST_COMPLETED;
  37. }
  38. /**
  39. * @brief Calls to SDLTest_GetFuzzerInvocationCount()
  40. */
  41. int
  42. sdltest_getFuzzerInvocationCount(void *arg)
  43. {
  44. Uint8 result;
  45. int fuzzerCount1, fuzzerCount2;
  46. fuzzerCount1 = SDLTest_GetFuzzerInvocationCount();
  47. SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()");
  48. SDLTest_AssertCheck(fuzzerCount1 >= 0, "Verify returned value, expected: >=0, got: %d", fuzzerCount1);
  49. result = SDLTest_RandomUint8();
  50. SDLTest_AssertPass("Call to SDLTest_RandomUint8(), returned %d", result);
  51. fuzzerCount2 = SDLTest_GetFuzzerInvocationCount();
  52. SDLTest_AssertPass("Call to SDLTest_GetFuzzerInvocationCount()");
  53. SDLTest_AssertCheck(fuzzerCount2 > fuzzerCount1, "Verify returned value, expected: >%d, got: %d", fuzzerCount1, fuzzerCount2);
  54. return TEST_COMPLETED;
  55. }
  56. /**
  57. * @brief Calls to random number generators
  58. */
  59. int
  60. sdltest_randomNumber(void *arg)
  61. {
  62. Sint64 result;
  63. double dresult;
  64. Uint64 umax;
  65. Sint64 min, max;
  66. result = (Sint64)SDLTest_RandomUint8();
  67. umax = (1 << 8) - 1;
  68. SDLTest_AssertPass("Call to SDLTest_RandomUint8");
  69. SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%"SDL_PRIu64"], got: %"SDL_PRIs64, umax, result);
  70. result = (Sint64)SDLTest_RandomSint8();
  71. min = 0 - (1 << 7);
  72. max = (1 << 7) - 1;
  73. SDLTest_AssertPass("Call to SDLTest_RandomSint8");
  74. SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%"SDL_PRIs64",%"SDL_PRIs64"], got: %"SDL_PRIs64, min, max, result);
  75. result = (Sint64)SDLTest_RandomUint16();
  76. umax = (1 << 16) - 1;
  77. SDLTest_AssertPass("Call to SDLTest_RandomUint16");
  78. SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%"SDL_PRIu64"], got: %"SDL_PRIs64, umax, result);
  79. result = (Sint64)SDLTest_RandomSint16();
  80. min = 0 - (1 << 15);
  81. max = (1 << 15) - 1;
  82. SDLTest_AssertPass("Call to SDLTest_RandomSint16");
  83. SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%"SDL_PRIs64",%"SDL_PRIs64"], got: %"SDL_PRIs64, min, max, result);
  84. result = (Sint64)SDLTest_RandomUint32();
  85. umax = ((Uint64)1 << 32) - 1;
  86. SDLTest_AssertPass("Call to SDLTest_RandomUint32");
  87. SDLTest_AssertCheck(result >= 0 && result <= (Sint64)umax, "Verify result value, expected: [0,%"SDL_PRIu64"], got: %"SDL_PRIs64, umax, result);
  88. result = (Sint64)SDLTest_RandomSint32();
  89. min = 0 - ((Sint64)1 << 31);
  90. max = ((Sint64)1 << 31) - 1;
  91. SDLTest_AssertPass("Call to SDLTest_RandomSint32");
  92. SDLTest_AssertCheck(result >= min && result <= max, "Verify result value, expected: [%"SDL_PRIs64",%"SDL_PRIs64"], got: %"SDL_PRIs64, min, max, result);
  93. SDLTest_RandomUint64();
  94. SDLTest_AssertPass("Call to SDLTest_RandomUint64");
  95. result = SDLTest_RandomSint64();
  96. SDLTest_AssertPass("Call to SDLTest_RandomSint64");
  97. dresult = (double)SDLTest_RandomUnitFloat();
  98. SDLTest_AssertPass("Call to SDLTest_RandomUnitFloat");
  99. SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult);
  100. dresult = (double)SDLTest_RandomFloat();
  101. SDLTest_AssertPass("Call to SDLTest_RandomFloat");
  102. SDLTest_AssertCheck(dresult >= (double)(-FLT_MAX) && dresult <= (double)FLT_MAX, "Verify result value, expected: [%e,%e], got: %e", (double)(-FLT_MAX), (double)FLT_MAX, dresult);
  103. dresult = (double)SDLTest_RandomUnitDouble();
  104. SDLTest_AssertPass("Call to SDLTest_RandomUnitDouble");
  105. SDLTest_AssertCheck(dresult >= 0.0 && dresult < 1.0, "Verify result value, expected: [0.0,1.0[, got: %e", dresult);
  106. dresult = SDLTest_RandomDouble();
  107. SDLTest_AssertPass("Call to SDLTest_RandomDouble");
  108. return TEST_COMPLETED;
  109. }
  110. /*
  111. * @brief Calls to random boundary number generators for Uint8
  112. */
  113. int
  114. sdltest_randomBoundaryNumberUint8(void *arg)
  115. {
  116. const char *expectedError = "That operation is not supported";
  117. char *lastError;
  118. Uint64 uresult;
  119. /* Clean error messages */
  120. SDL_ClearError();
  121. SDLTest_AssertPass("SDL_ClearError()");
  122. /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  123. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 10, SDL_TRUE);
  124. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  125. SDLTest_AssertCheck(
  126. uresult == 10,
  127. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, uresult);
  128. /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  129. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 11, SDL_TRUE);
  130. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  131. SDLTest_AssertCheck(
  132. uresult == 10 || uresult == 11,
  133. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, uresult);
  134. /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  135. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 12, SDL_TRUE);
  136. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  137. SDLTest_AssertCheck(
  138. uresult == 10 || uresult == 11 || uresult == 12,
  139. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, uresult);
  140. /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  141. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 13, SDL_TRUE);
  142. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  143. SDLTest_AssertCheck(
  144. uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
  145. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, uresult);
  146. /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  147. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(10, 20, SDL_TRUE);
  148. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  149. SDLTest_AssertCheck(
  150. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  151. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  152. /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  153. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(20, 10, SDL_TRUE);
  154. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  155. SDLTest_AssertCheck(
  156. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  157. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  158. /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  159. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(1, 20, SDL_FALSE);
  160. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  161. SDLTest_AssertCheck(
  162. uresult == 0 || uresult == 21,
  163. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, uresult);
  164. /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
  165. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 99, SDL_FALSE);
  166. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  167. SDLTest_AssertCheck(
  168. uresult == 100,
  169. "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, uresult);
  170. /* RandomUintXBoundaryValue(1, 0xff, SDL_FALSE) returns 0 (no error) */
  171. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(1, 255, SDL_FALSE);
  172. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  173. SDLTest_AssertCheck(
  174. uresult == 0,
  175. "Validate result value for parameters (1,255,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  176. lastError = (char *)SDL_GetError();
  177. SDLTest_AssertPass("SDL_GetError()");
  178. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  179. /* RandomUintXBoundaryValue(0, 0xfe, SDL_FALSE) returns 0xff (no error) */
  180. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 254, SDL_FALSE);
  181. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  182. SDLTest_AssertCheck(
  183. uresult == 0xff,
  184. "Validate result value for parameters (0,254,SDL_FALSE); expected: 0xff, got: %"SDL_PRIs64, uresult);
  185. lastError = (char *)SDL_GetError();
  186. SDLTest_AssertPass("SDL_GetError()");
  187. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  188. /* RandomUintXBoundaryValue(0, 0xff, SDL_FALSE) returns 0 (sets error) */
  189. uresult = (Uint64)SDLTest_RandomUint8BoundaryValue(0, 255, SDL_FALSE);
  190. SDLTest_AssertPass("Call to SDLTest_RandomUint8BoundaryValue");
  191. SDLTest_AssertCheck(
  192. uresult == 0,
  193. "Validate result value for parameters(0,255,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  194. lastError = (char *)SDL_GetError();
  195. SDLTest_AssertPass("SDL_GetError()");
  196. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  197. "SDL_GetError(): expected message '%s', was message: '%s'",
  198. expectedError,
  199. lastError);
  200. /* Clear error messages */
  201. SDL_ClearError();
  202. SDLTest_AssertPass("SDL_ClearError()");
  203. return TEST_COMPLETED;
  204. }
  205. /*
  206. * @brief Calls to random boundary number generators for Uint16
  207. */
  208. int
  209. sdltest_randomBoundaryNumberUint16(void *arg)
  210. {
  211. const char *expectedError = "That operation is not supported";
  212. char *lastError;
  213. Uint64 uresult;
  214. /* Clean error messages */
  215. SDL_ClearError();
  216. SDLTest_AssertPass("SDL_ClearError()");
  217. /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  218. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 10, SDL_TRUE);
  219. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  220. SDLTest_AssertCheck(
  221. uresult == 10,
  222. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, uresult);
  223. /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  224. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 11, SDL_TRUE);
  225. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  226. SDLTest_AssertCheck(
  227. uresult == 10 || uresult == 11,
  228. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, uresult);
  229. /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  230. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 12, SDL_TRUE);
  231. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  232. SDLTest_AssertCheck(
  233. uresult == 10 || uresult == 11 || uresult == 12,
  234. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, uresult);
  235. /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  236. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 13, SDL_TRUE);
  237. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  238. SDLTest_AssertCheck(
  239. uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
  240. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, uresult);
  241. /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  242. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(10, 20, SDL_TRUE);
  243. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  244. SDLTest_AssertCheck(
  245. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  246. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  247. /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  248. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(20, 10, SDL_TRUE);
  249. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  250. SDLTest_AssertCheck(
  251. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  252. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  253. /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  254. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(1, 20, SDL_FALSE);
  255. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  256. SDLTest_AssertCheck(
  257. uresult == 0 || uresult == 21,
  258. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, uresult);
  259. /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
  260. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 99, SDL_FALSE);
  261. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  262. SDLTest_AssertCheck(
  263. uresult == 100,
  264. "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, uresult);
  265. /* RandomUintXBoundaryValue(1, 0xffff, SDL_FALSE) returns 0 (no error) */
  266. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(1, 0xffff, SDL_FALSE);
  267. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  268. SDLTest_AssertCheck(
  269. uresult == 0,
  270. "Validate result value for parameters (1,0xffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  271. lastError = (char *)SDL_GetError();
  272. SDLTest_AssertPass("SDL_GetError()");
  273. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  274. /* RandomUintXBoundaryValue(0, 0xfffe, SDL_FALSE) returns 0xffff (no error) */
  275. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 0xfffe, SDL_FALSE);
  276. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  277. SDLTest_AssertCheck(
  278. uresult == 0xffff,
  279. "Validate result value for parameters (0,0xfffe,SDL_FALSE); expected: 0xffff, got: %"SDL_PRIs64, uresult);
  280. lastError = (char *)SDL_GetError();
  281. SDLTest_AssertPass("SDL_GetError()");
  282. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  283. /* RandomUintXBoundaryValue(0, 0xffff, SDL_FALSE) returns 0 (sets error) */
  284. uresult = (Uint64)SDLTest_RandomUint16BoundaryValue(0, 0xffff, SDL_FALSE);
  285. SDLTest_AssertPass("Call to SDLTest_RandomUint16BoundaryValue");
  286. SDLTest_AssertCheck(
  287. uresult == 0,
  288. "Validate result value for parameters(0,0xffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  289. lastError = (char *)SDL_GetError();
  290. SDLTest_AssertPass("SDL_GetError()");
  291. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  292. "SDL_GetError(): expected message '%s', was message: '%s'",
  293. expectedError,
  294. lastError);
  295. /* Clear error messages */
  296. SDL_ClearError();
  297. SDLTest_AssertPass("SDL_ClearError()");
  298. return TEST_COMPLETED;
  299. }
  300. /*
  301. * @brief Calls to random boundary number generators for Uint32
  302. */
  303. int
  304. sdltest_randomBoundaryNumberUint32(void *arg)
  305. {
  306. const char *expectedError = "That operation is not supported";
  307. char *lastError;
  308. Uint64 uresult;
  309. /* Clean error messages */
  310. SDL_ClearError();
  311. SDLTest_AssertPass("SDL_ClearError()");
  312. /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  313. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 10, SDL_TRUE);
  314. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  315. SDLTest_AssertCheck(
  316. uresult == 10,
  317. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, uresult);
  318. /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  319. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 11, SDL_TRUE);
  320. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  321. SDLTest_AssertCheck(
  322. uresult == 10 || uresult == 11,
  323. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, uresult);
  324. /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  325. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 12, SDL_TRUE);
  326. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  327. SDLTest_AssertCheck(
  328. uresult == 10 || uresult == 11 || uresult == 12,
  329. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, uresult);
  330. /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  331. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 13, SDL_TRUE);
  332. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  333. SDLTest_AssertCheck(
  334. uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
  335. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, uresult);
  336. /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  337. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(10, 20, SDL_TRUE);
  338. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  339. SDLTest_AssertCheck(
  340. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  341. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  342. /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  343. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(20, 10, SDL_TRUE);
  344. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  345. SDLTest_AssertCheck(
  346. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  347. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  348. /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  349. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(1, 20, SDL_FALSE);
  350. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  351. SDLTest_AssertCheck(
  352. uresult == 0 || uresult == 21,
  353. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, uresult);
  354. /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
  355. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 99, SDL_FALSE);
  356. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  357. SDLTest_AssertCheck(
  358. uresult == 100,
  359. "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, uresult);
  360. /* RandomUintXBoundaryValue(1, 0xffffffff, SDL_FALSE) returns 0 (no error) */
  361. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(1, 0xffffffff, SDL_FALSE);
  362. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  363. SDLTest_AssertCheck(
  364. uresult == 0,
  365. "Validate result value for parameters (1,0xffffffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  366. lastError = (char *)SDL_GetError();
  367. SDLTest_AssertPass("SDL_GetError()");
  368. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  369. /* RandomUintXBoundaryValue(0, 0xfffffffe, SDL_FALSE) returns 0xffffffff (no error) */
  370. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 0xfffffffe, SDL_FALSE);
  371. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  372. SDLTest_AssertCheck(
  373. uresult == 0xffffffff,
  374. "Validate result value for parameters (0,0xfffffffe,SDL_FALSE); expected: 0xffffffff, got: %"SDL_PRIs64, uresult);
  375. lastError = (char *)SDL_GetError();
  376. SDLTest_AssertPass("SDL_GetError()");
  377. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  378. /* RandomUintXBoundaryValue(0, 0xffffffff, SDL_FALSE) returns 0 (sets error) */
  379. uresult = (Uint64)SDLTest_RandomUint32BoundaryValue(0, 0xffffffff, SDL_FALSE);
  380. SDLTest_AssertPass("Call to SDLTest_RandomUint32BoundaryValue");
  381. SDLTest_AssertCheck(
  382. uresult == 0,
  383. "Validate result value for parameters(0,0xffffffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  384. lastError = (char *)SDL_GetError();
  385. SDLTest_AssertPass("SDL_GetError()");
  386. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  387. "SDL_GetError(): expected message '%s', was message: '%s'",
  388. expectedError,
  389. lastError);
  390. /* Clear error messages */
  391. SDL_ClearError();
  392. SDLTest_AssertPass("SDL_ClearError()");
  393. return TEST_COMPLETED;
  394. }
  395. /*
  396. * @brief Calls to random boundary number generators for Uint64
  397. */
  398. int
  399. sdltest_randomBoundaryNumberUint64(void *arg)
  400. {
  401. const char *expectedError = "That operation is not supported";
  402. char *lastError;
  403. Uint64 uresult;
  404. /* Clean error messages */
  405. SDL_ClearError();
  406. SDLTest_AssertPass("SDL_ClearError()");
  407. /* RandomUintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  408. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 10, SDL_TRUE);
  409. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  410. SDLTest_AssertCheck(
  411. uresult == 10,
  412. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, uresult);
  413. /* RandomUintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  414. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 11, SDL_TRUE);
  415. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  416. SDLTest_AssertCheck(
  417. uresult == 10 || uresult == 11,
  418. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, uresult);
  419. /* RandomUintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  420. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 12, SDL_TRUE);
  421. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  422. SDLTest_AssertCheck(
  423. uresult == 10 || uresult == 11 || uresult == 12,
  424. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, uresult);
  425. /* RandomUintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  426. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 13, SDL_TRUE);
  427. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  428. SDLTest_AssertCheck(
  429. uresult == 10 || uresult == 11 || uresult == 12 || uresult == 13,
  430. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, uresult);
  431. /* RandomUintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  432. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(10, 20, SDL_TRUE);
  433. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  434. SDLTest_AssertCheck(
  435. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  436. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  437. /* RandomUintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  438. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(20, 10, SDL_TRUE);
  439. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  440. SDLTest_AssertCheck(
  441. uresult == 10 || uresult == 11 || uresult == 19 || uresult == 20,
  442. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, uresult);
  443. /* RandomUintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  444. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(1, 20, SDL_FALSE);
  445. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  446. SDLTest_AssertCheck(
  447. uresult == 0 || uresult == 21,
  448. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, uresult);
  449. /* RandomUintXBoundaryValue(0, 99, SDL_FALSE) returns 100 */
  450. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, 99, SDL_FALSE);
  451. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  452. SDLTest_AssertCheck(
  453. uresult == 100,
  454. "Validate result value for parameters (0,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, uresult);
  455. /* RandomUintXBoundaryValue(1, 0xffffffffffffffff, SDL_FALSE) returns 0 (no error) */
  456. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(1, (Uint64)0xffffffffffffffffULL, SDL_FALSE);
  457. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  458. SDLTest_AssertCheck(
  459. uresult == 0,
  460. "Validate result value for parameters (1,0xffffffffffffffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  461. lastError = (char *)SDL_GetError();
  462. SDLTest_AssertPass("SDL_GetError()");
  463. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  464. /* RandomUintXBoundaryValue(0, 0xfffffffffffffffe, SDL_FALSE) returns 0xffffffffffffffff (no error) */
  465. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, (Uint64)0xfffffffffffffffeULL, SDL_FALSE);
  466. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  467. SDLTest_AssertCheck(
  468. uresult == (Uint64)0xffffffffffffffffULL,
  469. "Validate result value for parameters (0,0xfffffffffffffffe,SDL_FALSE); expected: 0xffffffffffffffff, got: %"SDL_PRIs64, uresult);
  470. lastError = (char *)SDL_GetError();
  471. SDLTest_AssertPass("SDL_GetError()");
  472. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  473. /* RandomUintXBoundaryValue(0, 0xffffffffffffffff, SDL_FALSE) returns 0 (sets error) */
  474. uresult = (Uint64)SDLTest_RandomUint64BoundaryValue(0, (Uint64)0xffffffffffffffffULL, SDL_FALSE);
  475. SDLTest_AssertPass("Call to SDLTest_RandomUint64BoundaryValue");
  476. SDLTest_AssertCheck(
  477. uresult == 0,
  478. "Validate result value for parameters(0,0xffffffffffffffff,SDL_FALSE); expected: 0, got: %"SDL_PRIs64, uresult);
  479. lastError = (char *)SDL_GetError();
  480. SDLTest_AssertPass("SDL_GetError()");
  481. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  482. "SDL_GetError(): expected message '%s', was message: '%s'",
  483. expectedError,
  484. lastError);
  485. /* Clear error messages */
  486. SDL_ClearError();
  487. SDLTest_AssertPass("SDL_ClearError()");
  488. return TEST_COMPLETED;
  489. }
  490. /*
  491. * @brief Calls to random boundary number generators for Sint8
  492. */
  493. int
  494. sdltest_randomBoundaryNumberSint8(void *arg)
  495. {
  496. const char *expectedError = "That operation is not supported";
  497. char *lastError;
  498. Sint64 sresult;
  499. /* Clean error messages */
  500. SDL_ClearError();
  501. SDLTest_AssertPass("SDL_ClearError()");
  502. /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  503. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 10, SDL_TRUE);
  504. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  505. SDLTest_AssertCheck(
  506. sresult == 10,
  507. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, sresult);
  508. /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  509. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 11, SDL_TRUE);
  510. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  511. SDLTest_AssertCheck(
  512. sresult == 10 || sresult == 11,
  513. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, sresult);
  514. /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  515. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 12, SDL_TRUE);
  516. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  517. SDLTest_AssertCheck(
  518. sresult == 10 || sresult == 11 || sresult == 12,
  519. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, sresult);
  520. /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  521. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 13, SDL_TRUE);
  522. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  523. SDLTest_AssertCheck(
  524. sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
  525. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, sresult);
  526. /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  527. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(10, 20, SDL_TRUE);
  528. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  529. SDLTest_AssertCheck(
  530. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  531. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  532. /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  533. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(20, 10, SDL_TRUE);
  534. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  535. SDLTest_AssertCheck(
  536. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  537. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  538. /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  539. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(1, 20, SDL_FALSE);
  540. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  541. SDLTest_AssertCheck(
  542. sresult == 0 || sresult == 21,
  543. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, sresult);
  544. /* RandomSintXBoundaryValue(SCHAR_MIN, 99, SDL_FALSE) returns 100 */
  545. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, 99, SDL_FALSE);
  546. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  547. SDLTest_AssertCheck(
  548. sresult == 100,
  549. "Validate result value for parameters (SCHAR_MIN,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, sresult);
  550. /* RandomSintXBoundaryValue(SCHAR_MIN + 1, SCHAR_MAX, SDL_FALSE) returns SCHAR_MIN (no error) */
  551. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN + 1, SCHAR_MAX, SDL_FALSE);
  552. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  553. SDLTest_AssertCheck(
  554. sresult == SCHAR_MIN,
  555. "Validate result value for parameters (SCHAR_MIN + 1,SCHAR_MAX,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SCHAR_MIN, sresult);
  556. lastError = (char *)SDL_GetError();
  557. SDLTest_AssertPass("SDL_GetError()");
  558. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  559. /* RandomSintXBoundaryValue(SCHAR_MIN, SCHAR_MAX - 1, SDL_FALSE) returns SCHAR_MAX (no error) */
  560. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, SCHAR_MAX -1, SDL_FALSE);
  561. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  562. SDLTest_AssertCheck(
  563. sresult == SCHAR_MAX,
  564. "Validate result value for parameters (SCHAR_MIN,SCHAR_MAX - 1,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SCHAR_MAX, sresult);
  565. lastError = (char *)SDL_GetError();
  566. SDLTest_AssertPass("SDL_GetError()");
  567. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  568. /* RandomSintXBoundaryValue(SCHAR_MIN, SCHAR_MAX, SDL_FALSE) returns SCHAR_MIN (sets error) */
  569. sresult = (Sint64)SDLTest_RandomSint8BoundaryValue(SCHAR_MIN, SCHAR_MAX, SDL_FALSE);
  570. SDLTest_AssertPass("Call to SDLTest_RandomSint8BoundaryValue");
  571. SDLTest_AssertCheck(
  572. sresult == SCHAR_MIN,
  573. "Validate result value for parameters(SCHAR_MIN,SCHAR_MAX,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SCHAR_MIN, sresult);
  574. lastError = (char *)SDL_GetError();
  575. SDLTest_AssertPass("SDL_GetError()");
  576. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  577. "SDL_GetError(): expected message '%s', was message: '%s'",
  578. expectedError,
  579. lastError);
  580. /* Clear error messages */
  581. SDL_ClearError();
  582. SDLTest_AssertPass("SDL_ClearError()");
  583. return TEST_COMPLETED;
  584. }
  585. /*
  586. * @brief Calls to random boundary number generators for Sint16
  587. */
  588. int
  589. sdltest_randomBoundaryNumberSint16(void *arg)
  590. {
  591. const char *expectedError = "That operation is not supported";
  592. char *lastError;
  593. Sint64 sresult;
  594. /* Clean error messages */
  595. SDL_ClearError();
  596. SDLTest_AssertPass("SDL_ClearError()");
  597. /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  598. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 10, SDL_TRUE);
  599. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  600. SDLTest_AssertCheck(
  601. sresult == 10,
  602. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, sresult);
  603. /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  604. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 11, SDL_TRUE);
  605. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  606. SDLTest_AssertCheck(
  607. sresult == 10 || sresult == 11,
  608. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, sresult);
  609. /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  610. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 12, SDL_TRUE);
  611. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  612. SDLTest_AssertCheck(
  613. sresult == 10 || sresult == 11 || sresult == 12,
  614. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, sresult);
  615. /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  616. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 13, SDL_TRUE);
  617. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  618. SDLTest_AssertCheck(
  619. sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
  620. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, sresult);
  621. /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  622. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(10, 20, SDL_TRUE);
  623. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  624. SDLTest_AssertCheck(
  625. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  626. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  627. /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  628. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(20, 10, SDL_TRUE);
  629. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  630. SDLTest_AssertCheck(
  631. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  632. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  633. /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  634. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(1, 20, SDL_FALSE);
  635. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  636. SDLTest_AssertCheck(
  637. sresult == 0 || sresult == 21,
  638. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, sresult);
  639. /* RandomSintXBoundaryValue(SHRT_MIN, 99, SDL_FALSE) returns 100 */
  640. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, 99, SDL_FALSE);
  641. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  642. SDLTest_AssertCheck(
  643. sresult == 100,
  644. "Validate result value for parameters (SHRT_MIN,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, sresult);
  645. /* RandomSintXBoundaryValue(SHRT_MIN + 1, SHRT_MAX, SDL_FALSE) returns SHRT_MIN (no error) */
  646. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN + 1, SHRT_MAX, SDL_FALSE);
  647. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  648. SDLTest_AssertCheck(
  649. sresult == SHRT_MIN,
  650. "Validate result value for parameters (SHRT_MIN+1,SHRT_MAX,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SHRT_MIN, sresult);
  651. lastError = (char *)SDL_GetError();
  652. SDLTest_AssertPass("SDL_GetError()");
  653. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  654. /* RandomSintXBoundaryValue(SHRT_MIN, SHRT_MAX - 1, SDL_FALSE) returns SHRT_MAX (no error) */
  655. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, SHRT_MAX - 1, SDL_FALSE);
  656. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  657. SDLTest_AssertCheck(
  658. sresult == SHRT_MAX,
  659. "Validate result value for parameters (SHRT_MIN,SHRT_MAX - 1,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SHRT_MAX, sresult);
  660. lastError = (char *)SDL_GetError();
  661. SDLTest_AssertPass("SDL_GetError()");
  662. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  663. /* RandomSintXBoundaryValue(SHRT_MIN, SHRT_MAX, SDL_FALSE) returns 0 (sets error) */
  664. sresult = (Sint64)SDLTest_RandomSint16BoundaryValue(SHRT_MIN, SHRT_MAX, SDL_FALSE);
  665. SDLTest_AssertPass("Call to SDLTest_RandomSint16BoundaryValue");
  666. SDLTest_AssertCheck(
  667. sresult == SHRT_MIN,
  668. "Validate result value for parameters(SHRT_MIN,SHRT_MAX,SDL_FALSE); expected: %d, got: %"SDL_PRIs64, SHRT_MIN, sresult);
  669. lastError = (char *)SDL_GetError();
  670. SDLTest_AssertPass("SDL_GetError()");
  671. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  672. "SDL_GetError(): expected message '%s', was message: '%s'",
  673. expectedError,
  674. lastError);
  675. /* Clear error messages */
  676. SDL_ClearError();
  677. SDLTest_AssertPass("SDL_ClearError()");
  678. return TEST_COMPLETED;
  679. }
  680. /*
  681. * @brief Calls to random boundary number generators for Sint32
  682. */
  683. int
  684. sdltest_randomBoundaryNumberSint32(void *arg)
  685. {
  686. const char *expectedError = "That operation is not supported";
  687. char *lastError;
  688. Sint64 sresult;
  689. #if ((ULONG_MAX) == (UINT_MAX))
  690. Sint32 long_min = LONG_MIN;
  691. Sint32 long_max = LONG_MAX;
  692. #else
  693. Sint32 long_min = INT_MIN;
  694. Sint32 long_max = INT_MAX;
  695. #endif
  696. /* Clean error messages */
  697. SDL_ClearError();
  698. SDLTest_AssertPass("SDL_ClearError()");
  699. /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  700. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 10, SDL_TRUE);
  701. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  702. SDLTest_AssertCheck(
  703. sresult == 10,
  704. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, sresult);
  705. /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  706. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 11, SDL_TRUE);
  707. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  708. SDLTest_AssertCheck(
  709. sresult == 10 || sresult == 11,
  710. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, sresult);
  711. /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  712. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 12, SDL_TRUE);
  713. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  714. SDLTest_AssertCheck(
  715. sresult == 10 || sresult == 11 || sresult == 12,
  716. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, sresult);
  717. /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  718. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 13, SDL_TRUE);
  719. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  720. SDLTest_AssertCheck(
  721. sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
  722. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, sresult);
  723. /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  724. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(10, 20, SDL_TRUE);
  725. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  726. SDLTest_AssertCheck(
  727. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  728. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  729. /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  730. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(20, 10, SDL_TRUE);
  731. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  732. SDLTest_AssertCheck(
  733. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  734. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  735. /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  736. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(1, 20, SDL_FALSE);
  737. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  738. SDLTest_AssertCheck(
  739. sresult == 0 || sresult == 21,
  740. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, sresult);
  741. /* RandomSintXBoundaryValue(LONG_MIN, 99, SDL_FALSE) returns 100 */
  742. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, 99, SDL_FALSE);
  743. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  744. SDLTest_AssertCheck(
  745. sresult == 100,
  746. "Validate result value for parameters (LONG_MIN,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, sresult);
  747. /* RandomSintXBoundaryValue(LONG_MIN + 1, LONG_MAX, SDL_FALSE) returns LONG_MIN (no error) */
  748. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min + 1, long_max, SDL_FALSE);
  749. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  750. SDLTest_AssertCheck(
  751. sresult == long_min,
  752. "Validate result value for parameters (LONG_MIN+1,LONG_MAX,SDL_FALSE); expected: %" SDL_PRIs32 ", got: %" SDL_PRIs64, long_min, sresult);
  753. lastError = (char *)SDL_GetError();
  754. SDLTest_AssertPass("SDL_GetError()");
  755. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  756. /* RandomSintXBoundaryValue(LONG_MIN, LONG_MAX - 1, SDL_FALSE) returns LONG_MAX (no error) */
  757. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, long_max - 1, SDL_FALSE);
  758. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  759. SDLTest_AssertCheck(
  760. sresult == long_max,
  761. "Validate result value for parameters (LONG_MIN,LONG_MAX - 1,SDL_FALSE); expected: %" SDL_PRIs32 ", got: %" SDL_PRIs64, long_max, sresult);
  762. lastError = (char *)SDL_GetError();
  763. SDLTest_AssertPass("SDL_GetError()");
  764. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  765. /* RandomSintXBoundaryValue(LONG_MIN, LONG_MAX, SDL_FALSE) returns 0 (sets error) */
  766. sresult = (Sint64)SDLTest_RandomSint32BoundaryValue(long_min, long_max, SDL_FALSE);
  767. SDLTest_AssertPass("Call to SDLTest_RandomSint32BoundaryValue");
  768. SDLTest_AssertCheck(
  769. sresult == long_min,
  770. "Validate result value for parameters(LONG_MIN,LONG_MAX,SDL_FALSE); expected: %" SDL_PRIs32 ", got: %" SDL_PRIs64, long_min, sresult);
  771. lastError = (char *)SDL_GetError();
  772. SDLTest_AssertPass("SDL_GetError()");
  773. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  774. "SDL_GetError(): expected message '%s', was message: '%s'",
  775. expectedError,
  776. lastError);
  777. /* Clear error messages */
  778. SDL_ClearError();
  779. SDLTest_AssertPass("SDL_ClearError()");
  780. return TEST_COMPLETED;
  781. }
  782. /*
  783. * @brief Calls to random boundary number generators for Sint64
  784. */
  785. int
  786. sdltest_randomBoundaryNumberSint64(void *arg)
  787. {
  788. const char *expectedError = "That operation is not supported";
  789. char *lastError;
  790. Sint64 sresult;
  791. /* Clean error messages */
  792. SDL_ClearError();
  793. SDLTest_AssertPass("SDL_ClearError()");
  794. /* RandomSintXBoundaryValue(10, 10, SDL_TRUE) returns 10 */
  795. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 10, SDL_TRUE);
  796. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  797. SDLTest_AssertCheck(
  798. sresult == 10,
  799. "Validate result value for parameters (10,10,SDL_TRUE); expected: 10, got: %"SDL_PRIs64, sresult);
  800. /* RandomSintXBoundaryValue(10, 11, SDL_TRUE) returns 10, 11 */
  801. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 11, SDL_TRUE);
  802. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  803. SDLTest_AssertCheck(
  804. sresult == 10 || sresult == 11,
  805. "Validate result value for parameters (10,11,SDL_TRUE); expected: 10|11, got: %"SDL_PRIs64, sresult);
  806. /* RandomSintXBoundaryValue(10, 12, SDL_TRUE) returns 10, 11, 12 */
  807. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 12, SDL_TRUE);
  808. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  809. SDLTest_AssertCheck(
  810. sresult == 10 || sresult == 11 || sresult == 12,
  811. "Validate result value for parameters (10,12,SDL_TRUE); expected: 10|11|12, got: %"SDL_PRIs64, sresult);
  812. /* RandomSintXBoundaryValue(10, 13, SDL_TRUE) returns 10, 11, 12, 13 */
  813. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 13, SDL_TRUE);
  814. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  815. SDLTest_AssertCheck(
  816. sresult == 10 || sresult == 11 || sresult == 12 || sresult == 13,
  817. "Validate result value for parameters (10,13,SDL_TRUE); expected: 10|11|12|13, got: %"SDL_PRIs64, sresult);
  818. /* RandomSintXBoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20 */
  819. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(10, 20, SDL_TRUE);
  820. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  821. SDLTest_AssertCheck(
  822. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  823. "Validate result value for parameters (10,20,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  824. /* RandomSintXBoundaryValue(20, 10, SDL_TRUE) returns 10, 11, 19 or 20 */
  825. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(20, 10, SDL_TRUE);
  826. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  827. SDLTest_AssertCheck(
  828. sresult == 10 || sresult == 11 || sresult == 19 || sresult == 20,
  829. "Validate result value for parameters (20,10,SDL_TRUE); expected: 10|11|19|20, got: %"SDL_PRIs64, sresult);
  830. /* RandomSintXBoundaryValue(1, 20, SDL_FALSE) returns 0, 21 */
  831. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(1, 20, SDL_FALSE);
  832. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  833. SDLTest_AssertCheck(
  834. sresult == 0 || sresult == 21,
  835. "Validate result value for parameters (1,20,SDL_FALSE); expected: 0|21, got: %"SDL_PRIs64, sresult);
  836. /* RandomSintXBoundaryValue(LLONG_MIN, 99, SDL_FALSE) returns 100 */
  837. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(INT64_MIN, 99, SDL_FALSE);
  838. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  839. SDLTest_AssertCheck(
  840. sresult == 100,
  841. "Validate result value for parameters (LLONG_MIN,99,SDL_FALSE); expected: 100, got: %"SDL_PRIs64, sresult);
  842. /* RandomSintXBoundaryValue(LLONG_MIN + 1, LLONG_MAX, SDL_FALSE) returns LLONG_MIN (no error) */
  843. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(INT64_MIN + 1, INT64_MAX, SDL_FALSE);
  844. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  845. SDLTest_AssertCheck(
  846. sresult == INT64_MIN,
  847. "Validate result value for parameters (LLONG_MIN+1,LLONG_MAX,SDL_FALSE); expected: %"SDL_PRIs64", got: %"SDL_PRIs64, INT64_MIN, sresult);
  848. lastError = (char *)SDL_GetError();
  849. SDLTest_AssertPass("SDL_GetError()");
  850. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  851. /* RandomSintXBoundaryValue(LLONG_MIN, LLONG_MAX - 1, SDL_FALSE) returns LLONG_MAX (no error) */
  852. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(INT64_MIN, INT64_MAX - 1, SDL_FALSE);
  853. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  854. SDLTest_AssertCheck(
  855. sresult == INT64_MAX,
  856. "Validate result value for parameters (LLONG_MIN,LLONG_MAX - 1,SDL_FALSE); expected: %"SDL_PRIs64", got: %"SDL_PRIs64, INT64_MAX, sresult);
  857. lastError = (char *)SDL_GetError();
  858. SDLTest_AssertPass("SDL_GetError()");
  859. SDLTest_AssertCheck(lastError == NULL || lastError[0] == '\0', "Validate no error message was set");
  860. /* RandomSintXBoundaryValue(LLONG_MIN, LLONG_MAX, SDL_FALSE) returns 0 (sets error) */
  861. sresult = (Sint64)SDLTest_RandomSint64BoundaryValue(INT64_MIN, INT64_MAX, SDL_FALSE);
  862. SDLTest_AssertPass("Call to SDLTest_RandomSint64BoundaryValue");
  863. SDLTest_AssertCheck(
  864. sresult == INT64_MIN,
  865. "Validate result value for parameters(LLONG_MIN,LLONG_MAX,SDL_FALSE); expected: %"SDL_PRIs64", got: %"SDL_PRIs64, INT64_MIN, sresult);
  866. lastError = (char *)SDL_GetError();
  867. SDLTest_AssertPass("SDL_GetError()");
  868. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  869. "SDL_GetError(): expected message '%s', was message: '%s'",
  870. expectedError,
  871. lastError);
  872. /* Clear error messages */
  873. SDL_ClearError();
  874. SDLTest_AssertPass("SDL_ClearError()");
  875. return TEST_COMPLETED;
  876. }
  877. /**
  878. * @brief Calls to SDLTest_RandomIntegerInRange
  879. */
  880. int
  881. sdltest_randomIntegerInRange(void *arg)
  882. {
  883. Sint32 min, max;
  884. Sint32 result;
  885. #if ((ULONG_MAX) == (UINT_MAX))
  886. Sint32 long_min = LONG_MIN;
  887. Sint32 long_max = LONG_MAX;
  888. #else
  889. Sint32 long_min = INT_MIN;
  890. Sint32 long_max = INT_MAX;
  891. #endif
  892. /* Standard range */
  893. min = (Sint32)SDLTest_RandomSint16();
  894. max = min + (Sint32)SDLTest_RandomUint8() + 2;
  895. result = SDLTest_RandomIntegerInRange(min, max);
  896. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,max)");
  897. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  898. /* One Range */
  899. min = (Sint32)SDLTest_RandomSint16();
  900. max = min + 1;
  901. result = SDLTest_RandomIntegerInRange(min, max);
  902. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,min+1)");
  903. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  904. /* Zero range */
  905. min = (Sint32)SDLTest_RandomSint16();
  906. max = min;
  907. result = SDLTest_RandomIntegerInRange(min, max);
  908. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(min,min)");
  909. SDLTest_AssertCheck(min == result, "Validated returned value; expected: %" SDL_PRIs32 ", got: %" SDL_PRIs32, min, result);
  910. /* Zero range at zero */
  911. min = 0;
  912. max = 0;
  913. result = SDLTest_RandomIntegerInRange(min, max);
  914. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(0,0)");
  915. SDLTest_AssertCheck(result == 0, "Validated returned value; expected: 0, got: %" SDL_PRIs32, result);
  916. /* Swapped min-max */
  917. min = (Sint32)SDLTest_RandomSint16();
  918. max = min + (Sint32)SDLTest_RandomUint8() + 2;
  919. result = SDLTest_RandomIntegerInRange(max, min);
  920. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(max,min)");
  921. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  922. /* Range with min at integer limit */
  923. min = long_min;
  924. max = long_max + (Sint32)SDLTest_RandomSint16();
  925. result = SDLTest_RandomIntegerInRange(min, max);
  926. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(SINT32_MIN,...)");
  927. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  928. /* Range with max at integer limit */
  929. min = long_min - (Sint32)SDLTest_RandomSint16();
  930. max = long_max;
  931. result = SDLTest_RandomIntegerInRange(min, max);
  932. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(...,SINT32_MAX)");
  933. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  934. /* Full integer range */
  935. min = long_min;
  936. max = long_max;
  937. result = SDLTest_RandomIntegerInRange(min, max);
  938. SDLTest_AssertPass("Call to SDLTest_RandomIntegerInRange(SINT32_MIN,SINT32_MAX)");
  939. SDLTest_AssertCheck(min <= result && result <= max, "Validated returned value; expected: [%" SDL_PRIs32 ",%" SDL_PRIs32 "], got: %" SDL_PRIs32, min, max, result);
  940. return TEST_COMPLETED;
  941. }
  942. /**
  943. * @brief Calls to SDLTest_RandomAsciiString
  944. */
  945. int
  946. sdltest_randomAsciiString(void *arg)
  947. {
  948. char* result;
  949. size_t len;
  950. int nonAsciiCharacters;
  951. size_t i;
  952. result = SDLTest_RandomAsciiString();
  953. SDLTest_AssertPass("Call to SDLTest_RandomAsciiString()");
  954. SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
  955. if (result != NULL) {
  956. len = SDL_strlen(result);
  957. SDLTest_AssertCheck(len >= 1 && len <= 255, "Validate that result length; expected: len=[1,255], got: %d", (int) len);
  958. nonAsciiCharacters = 0;
  959. for (i=0; i<len; i++) {
  960. if (SDL_iscntrl(result[i])) {
  961. nonAsciiCharacters++;
  962. }
  963. }
  964. SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-Ascii characters, got: %d", nonAsciiCharacters);
  965. if (nonAsciiCharacters) {
  966. SDLTest_LogError("Invalid result from generator: '%s'", result);
  967. }
  968. SDL_free(result);
  969. }
  970. return TEST_COMPLETED;
  971. }
  972. /**
  973. * @brief Calls to SDLTest_RandomAsciiStringWithMaximumLength
  974. */
  975. int
  976. sdltest_randomAsciiStringWithMaximumLength(void *arg)
  977. {
  978. const char* expectedError = "Parameter 'maxLength' is invalid";
  979. char* lastError;
  980. char* result;
  981. size_t targetLen;
  982. size_t len;
  983. int nonAsciiCharacters;
  984. size_t i;
  985. targetLen = 16 + SDLTest_RandomUint8();
  986. result = SDLTest_RandomAsciiStringWithMaximumLength((int) targetLen);
  987. SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringWithMaximumLength(%d)", (int) targetLen);
  988. SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
  989. if (result != NULL) {
  990. len = SDL_strlen(result);
  991. SDLTest_AssertCheck(len >= 1 && len <= targetLen, "Validate that result length; expected: len=[1,%d], got: %d", (int) targetLen, (int) len);
  992. nonAsciiCharacters = 0;
  993. for (i=0; i<len; i++) {
  994. if (SDL_iscntrl(result[i])) {
  995. nonAsciiCharacters++;
  996. }
  997. }
  998. SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-Ascii characters, got: %d", nonAsciiCharacters);
  999. if (nonAsciiCharacters) {
  1000. SDLTest_LogError("Invalid result from generator: '%s'", result);
  1001. }
  1002. SDL_free(result);
  1003. }
  1004. /* Negative test */
  1005. targetLen = 0;
  1006. result = SDLTest_RandomAsciiStringWithMaximumLength((int) targetLen);
  1007. SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringWithMaximumLength(%d)", (int) targetLen);
  1008. SDLTest_AssertCheck(result == NULL, "Validate that result is NULL");
  1009. lastError = (char *)SDL_GetError();
  1010. SDLTest_AssertPass("SDL_GetError()");
  1011. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  1012. "SDL_GetError(): expected message '%s', was message: '%s'",
  1013. expectedError,
  1014. lastError);
  1015. /* Clear error messages */
  1016. SDL_ClearError();
  1017. SDLTest_AssertPass("SDL_ClearError()");
  1018. return TEST_COMPLETED;
  1019. }
  1020. /**
  1021. * @brief Calls to SDLTest_RandomAsciiStringOfSize
  1022. */
  1023. int
  1024. sdltest_randomAsciiStringOfSize(void *arg)
  1025. {
  1026. const char* expectedError = "Parameter 'size' is invalid";
  1027. char* lastError;
  1028. char* result;
  1029. size_t targetLen;
  1030. size_t len;
  1031. int nonAsciiCharacters;
  1032. size_t i;
  1033. /* Positive test */
  1034. targetLen = 16 + SDLTest_RandomUint8();
  1035. result = SDLTest_RandomAsciiStringOfSize((int) targetLen);
  1036. SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringOfSize(%d)", (int) targetLen);
  1037. SDLTest_AssertCheck(result != NULL, "Validate that result is not NULL");
  1038. if (result != NULL) {
  1039. len = SDL_strlen(result);
  1040. SDLTest_AssertCheck(len == targetLen, "Validate that result length; expected: len=%d, got: %d", (int) targetLen, (int) len);
  1041. nonAsciiCharacters = 0;
  1042. for (i=0; i<len; i++) {
  1043. if (SDL_iscntrl(result[i])) {
  1044. nonAsciiCharacters++;
  1045. }
  1046. }
  1047. SDLTest_AssertCheck(nonAsciiCharacters == 0, "Validate that result does not contain non-ASCII characters, got: %d", nonAsciiCharacters);
  1048. if (nonAsciiCharacters) {
  1049. SDLTest_LogError("Invalid result from generator: '%s'", result);
  1050. }
  1051. SDL_free(result);
  1052. }
  1053. /* Negative test */
  1054. targetLen = 0;
  1055. result = SDLTest_RandomAsciiStringOfSize((int) targetLen);
  1056. SDLTest_AssertPass("Call to SDLTest_RandomAsciiStringOfSize(%d)", (int) targetLen);
  1057. SDLTest_AssertCheck(result == NULL, "Validate that result is NULL");
  1058. lastError = (char *)SDL_GetError();
  1059. SDLTest_AssertPass("SDL_GetError()");
  1060. SDLTest_AssertCheck(lastError != NULL && SDL_strcmp(lastError, expectedError) == 0,
  1061. "SDL_GetError(): expected message '%s', was message: '%s'",
  1062. expectedError,
  1063. lastError);
  1064. /* Clear error messages */
  1065. SDL_ClearError();
  1066. SDLTest_AssertPass("SDL_ClearError()");
  1067. return TEST_COMPLETED;
  1068. }
  1069. /* ================= Test References ================== */
  1070. /* SDL_test test cases */
  1071. static const SDLTest_TestCaseReference sdltestTest1 =
  1072. { (SDLTest_TestCaseFp)sdltest_getFuzzerInvocationCount, "sdltest_getFuzzerInvocationCount", "Call to sdltest_GetFuzzerInvocationCount", TEST_ENABLED };
  1073. static const SDLTest_TestCaseReference sdltestTest2 =
  1074. { (SDLTest_TestCaseFp)sdltest_randomNumber, "sdltest_randomNumber", "Calls to random number generators", TEST_ENABLED };
  1075. static const SDLTest_TestCaseReference sdltestTest3 =
  1076. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint8, "sdltest_randomBoundaryNumberUint8", "Calls to random boundary number generators for Uint8", TEST_ENABLED };
  1077. static const SDLTest_TestCaseReference sdltestTest4 =
  1078. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint16, "sdltest_randomBoundaryNumberUint16", "Calls to random boundary number generators for Uint16", TEST_ENABLED };
  1079. static const SDLTest_TestCaseReference sdltestTest5 =
  1080. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint32, "sdltest_randomBoundaryNumberUint32", "Calls to random boundary number generators for Uint32", TEST_ENABLED };
  1081. static const SDLTest_TestCaseReference sdltestTest6 =
  1082. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberUint64, "sdltest_randomBoundaryNumberUint64", "Calls to random boundary number generators for Uint64", TEST_ENABLED };
  1083. static const SDLTest_TestCaseReference sdltestTest7 =
  1084. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint8, "sdltest_randomBoundaryNumberSint8", "Calls to random boundary number generators for Sint8", TEST_ENABLED };
  1085. static const SDLTest_TestCaseReference sdltestTest8 =
  1086. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint16, "sdltest_randomBoundaryNumberSint16", "Calls to random boundary number generators for Sint16", TEST_ENABLED };
  1087. static const SDLTest_TestCaseReference sdltestTest9 =
  1088. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint32, "sdltest_randomBoundaryNumberSint32", "Calls to random boundary number generators for Sint32", TEST_ENABLED };
  1089. static const SDLTest_TestCaseReference sdltestTest10 =
  1090. { (SDLTest_TestCaseFp)sdltest_randomBoundaryNumberSint64, "sdltest_randomBoundaryNumberSint64", "Calls to random boundary number generators for Sint64", TEST_ENABLED };
  1091. static const SDLTest_TestCaseReference sdltestTest11 =
  1092. { (SDLTest_TestCaseFp)sdltest_randomIntegerInRange, "sdltest_randomIntegerInRange", "Calls to ranged random number generator", TEST_ENABLED };
  1093. static const SDLTest_TestCaseReference sdltestTest12 =
  1094. { (SDLTest_TestCaseFp)sdltest_randomAsciiString, "sdltest_randomAsciiString", "Calls to default ASCII string generator", TEST_ENABLED };
  1095. static const SDLTest_TestCaseReference sdltestTest13 =
  1096. { (SDLTest_TestCaseFp)sdltest_randomAsciiStringWithMaximumLength, "sdltest_randomAsciiStringWithMaximumLength", "Calls to random maximum length ASCII string generator", TEST_ENABLED };
  1097. static const SDLTest_TestCaseReference sdltestTest14 =
  1098. { (SDLTest_TestCaseFp)sdltest_randomAsciiStringOfSize, "sdltest_randomAsciiStringOfSize", "Calls to fixed size ASCII string generator", TEST_ENABLED };
  1099. static const SDLTest_TestCaseReference sdltestTest15 =
  1100. { (SDLTest_TestCaseFp)sdltest_generateRunSeed, "sdltest_generateRunSeed", "Checks internal harness function SDLTest_GenerateRunSeed", TEST_ENABLED };
  1101. /* Sequence of SDL_test test cases */
  1102. static const SDLTest_TestCaseReference *sdltestTests[] = {
  1103. &sdltestTest1, &sdltestTest2, &sdltestTest3, &sdltestTest4, &sdltestTest5, &sdltestTest6,
  1104. &sdltestTest7, &sdltestTest8, &sdltestTest9, &sdltestTest10, &sdltestTest11, &sdltestTest12,
  1105. &sdltestTest13, &sdltestTest14, &sdltestTest15, NULL
  1106. };
  1107. /* SDL_test test suite (global) */
  1108. SDLTest_TestSuiteReference sdltestTestSuite = {
  1109. "SDLtest",
  1110. NULL,
  1111. sdltestTests,
  1112. NULL
  1113. };
  1114. /* vi: set ts=4 sw=4 expandtab: */