ListTests.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #include "../Tests.h"
  2. #include "core/List.h"
  3. #include "core/ToString.h"
  4. #include "core/Vector.h"
  5. static void testAdd() {
  6. List list;
  7. initList(&list, sizeof(size_t));
  8. addListType(&list, size_t, 5);
  9. TEST_SIZE(5, getTypedListIndex(&list, 0, size_t));
  10. TEST_SIZE(1, list.length);
  11. destroyList(&list);
  12. }
  13. static void testMultipleAdd() {
  14. List list;
  15. initList(&list, sizeof(size_t));
  16. addListType(&list, size_t, 4);
  17. addListType(&list, size_t, 3);
  18. addListType(&list, size_t, 2);
  19. TEST_SIZE(4, getTypedListIndex(&list, 0, size_t));
  20. TEST_SIZE(3, getTypedListIndex(&list, 1, size_t));
  21. TEST_SIZE(2, getTypedListIndex(&list, 2, size_t));
  22. TEST_SIZE(2, getTypedListLast(&list, size_t));
  23. TEST_SIZE(3, list.length);
  24. destroyList(&list);
  25. }
  26. static void testAddLast() {
  27. List list;
  28. initList(&list, sizeof(size_t));
  29. addListType(&list, size_t, 4);
  30. addListType(&list, size_t, 3);
  31. addLastListData(&list);
  32. TEST_SIZE(4, getTypedListIndex(&list, 0, size_t));
  33. TEST_SIZE(3, getTypedListIndex(&list, 1, size_t));
  34. TEST_SIZE(3, getTypedListIndex(&list, 2, size_t));
  35. TEST_SIZE(3, list.length);
  36. destroyList(&list);
  37. }
  38. static void testAddReplace() {
  39. List list;
  40. initList(&list, sizeof(size_t));
  41. addListType(&list, size_t, 5);
  42. getTypedListIndex(&list, 0, size_t) = 3;
  43. TEST_SIZE(3, getTypedListIndex(&list, 0, size_t));
  44. destroyList(&list);
  45. }
  46. static void testClear() {
  47. List list;
  48. initList(&list, sizeof(size_t));
  49. addListType(&list, size_t, 5);
  50. addListType(&list, size_t, 4);
  51. clearList(&list);
  52. TEST_SIZE(0, list.length);
  53. destroyList(&list);
  54. }
  55. static void testBigAdd(bool light) {
  56. size_t limit = light ? 10000 : 100000;
  57. List list;
  58. initList(&list, sizeof(size_t));
  59. for(size_t i = 0; i < limit; i++) {
  60. addListType(&list, size_t, i);
  61. }
  62. for(size_t i = 0; i < list.length; i++) {
  63. TEST_SIZE(i, getTypedListIndex(&list, i, size_t));
  64. }
  65. TEST_SIZE(limit, list.length);
  66. destroyList(&list);
  67. }
  68. static void testToString1() {
  69. List list;
  70. initList(&list, sizeof(size_t));
  71. addListType(&list, size_t, 1);
  72. addListType(&list, size_t, 243);
  73. addListType(&list, size_t, 423);
  74. char buffer[128];
  75. size_t n = toString(&list, buffer, sizeof(buffer), toStringSize);
  76. TEST_SIZE(13, n);
  77. TEST_STRING("[1, 243, 423]", buffer);
  78. destroyList(&list);
  79. }
  80. static void testToString2() {
  81. List list;
  82. initList(&list, sizeof(size_t));
  83. addListType(&list, size_t, 1);
  84. char buffer[128];
  85. size_t n = toString(&list, buffer, sizeof(buffer), toStringSize);
  86. TEST_SIZE(3, n);
  87. TEST_STRING("[1]", buffer);
  88. destroyList(&list);
  89. }
  90. static void testToString3() {
  91. List list;
  92. initList(&list, sizeof(size_t));
  93. char buffer[128];
  94. size_t n = toString(&list, buffer, sizeof(buffer), toStringSize);
  95. TEST_SIZE(2, n);
  96. TEST_STRING("[]", buffer);
  97. destroyList(&list);
  98. }
  99. static void testRemoveBySwap() {
  100. List list;
  101. initList(&list, sizeof(size_t));
  102. addListType(&list, size_t, 4);
  103. addListType(&list, size_t, 3);
  104. addListType(&list, size_t, 2);
  105. removeListIndexBySwap(&list, 0);
  106. TEST_SIZE(2, getTypedListIndex(&list, 0, size_t));
  107. TEST_SIZE(3, getTypedListIndex(&list, 1, size_t));
  108. TEST_SIZE(2, list.length);
  109. removeListIndexBySwap(&list, 1);
  110. TEST_SIZE(2, getTypedListIndex(&list, 0, size_t));
  111. TEST_SIZE(1, list.length);
  112. removeListIndexBySwap(&list, 0);
  113. TEST_SIZE(0, list.length);
  114. destroyList(&list);
  115. }
  116. static void testRemove() {
  117. List list;
  118. initList(&list, sizeof(size_t));
  119. addListType(&list, size_t, 4);
  120. addListType(&list, size_t, 3);
  121. addListType(&list, size_t, 2);
  122. removeListIndex(&list, 0);
  123. TEST_SIZE(3, getTypedListIndex(&list, 0, size_t));
  124. TEST_SIZE(2, getTypedListIndex(&list, 1, size_t));
  125. TEST_SIZE(2, list.length);
  126. removeListIndex(&list, 1);
  127. TEST_SIZE(3, getTypedListIndex(&list, 0, size_t));
  128. TEST_SIZE(1, list.length);
  129. removeListIndex(&list, 0);
  130. TEST_SIZE(0, list.length);
  131. destroyList(&list);
  132. }
  133. static void testRemoveLast() {
  134. List list;
  135. initList(&list, sizeof(size_t));
  136. addListType(&list, size_t, 4);
  137. addListType(&list, size_t, 3);
  138. addListType(&list, size_t, 2);
  139. removeListLast(&list);
  140. TEST_SIZE(4, getTypedListIndex(&list, 0, size_t));
  141. TEST_SIZE(3, getTypedListIndex(&list, 1, size_t));
  142. TEST_SIZE(2, list.length);
  143. removeListLast(&list);
  144. TEST_SIZE(4, getTypedListIndex(&list, 0, size_t));
  145. TEST_SIZE(1, list.length);
  146. removeListLast(&list);
  147. TEST_SIZE(0, list.length);
  148. destroyList(&list);
  149. }
  150. static void testInvalidReserve() {
  151. List list;
  152. initList(&list, sizeof(size_t));
  153. reserveListEntries(&list, 0);
  154. destroyList(&list);
  155. }
  156. static void testStruct() {
  157. List list;
  158. Vector3 v = {{1, 2, 3}};
  159. initList(&list, sizeof(v));
  160. addListData(&list, &v);
  161. addListType(&list, Vector3, {2, 3, 4});
  162. Vector3* entry = getListIndex(&list, 0);
  163. TEST_V3(&v, entry);
  164. destroyList(&list);
  165. }
  166. void testList(bool light) {
  167. testAdd();
  168. testMultipleAdd();
  169. testAddLast();
  170. testAddReplace();
  171. testClear();
  172. testBigAdd(light);
  173. testToString1();
  174. testToString2();
  175. testToString3();
  176. testRemoveBySwap();
  177. testRemove();
  178. testRemoveLast();
  179. testInvalidReserve();
  180. testStruct();
  181. }