testautomation_sdltest.c 61 KB

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