QueueTests.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #include "../Tests.h"
  2. #include "core/Queue.h"
  3. #include "core/ToString.h"
  4. #include "core/Utility.h"
  5. static void testReadAndWrite() {
  6. Queue r;
  7. initQueue(&r, 5, sizeof(size_t));
  8. TEST_SIZE(0, r.length);
  9. pushQueueType(&r, size_t, 4);
  10. TEST_SIZE(1, r.length);
  11. TEST_SIZE(4, getTypedQueueIndex(&r, 0, size_t));
  12. popQueueData(&r);
  13. TEST_SIZE(0, r.length);
  14. destroyQueue(&r);
  15. }
  16. static void testOverflow() {
  17. Queue r;
  18. initQueue(&r, 3, sizeof(size_t));
  19. pushQueueType(&r, size_t, 1);
  20. pushQueueType(&r, size_t, 2);
  21. pushQueueType(&r, size_t, 3);
  22. pushQueueType(&r, size_t, 4);
  23. pushQueueType(&r, size_t, 5);
  24. TEST_SIZE(3, r.length);
  25. TEST_SIZE(1, getTypedQueueIndex(&r, 0, size_t));
  26. popQueueData(&r);
  27. TEST_SIZE(2, r.length);
  28. TEST_SIZE(2, getTypedQueueIndex(&r, 0, size_t));
  29. popQueueData(&r);
  30. TEST_SIZE(1, r.length);
  31. TEST_SIZE(3, getTypedQueueIndex(&r, 0, size_t));
  32. popQueueData(&r);
  33. TEST_SIZE(0, r.length);
  34. destroyQueue(&r);
  35. }
  36. static void testRefill() {
  37. Queue r;
  38. initQueue(&r, 3, sizeof(size_t));
  39. pushQueueType(&r, size_t, 1);
  40. pushQueueType(&r, size_t, 2);
  41. pushQueueType(&r, size_t, 3);
  42. pushQueueType(&r, size_t, 4);
  43. TEST_SIZE(3, r.length);
  44. TEST_SIZE(1, getTypedQueueIndex(&r, 0, size_t));
  45. popQueueData(&r);
  46. TEST_SIZE(2, getTypedQueueIndex(&r, 0, size_t));
  47. popQueueData(&r);
  48. TEST_SIZE(3, getTypedQueueIndex(&r, 0, size_t));
  49. popQueueData(&r);
  50. TEST_SIZE(0, r.length);
  51. pushQueueType(&r, size_t, 5);
  52. pushQueueType(&r, size_t, 6);
  53. TEST_SIZE(2, r.length);
  54. TEST_SIZE(5, getTypedQueueIndex(&r, 0, size_t));
  55. popQueueData(&r);
  56. TEST_SIZE(6, getTypedQueueIndex(&r, 0, size_t));
  57. popQueueData(&r);
  58. TEST_SIZE(0, r.length);
  59. destroyQueue(&r);
  60. }
  61. static void testClear() {
  62. Queue r;
  63. initQueue(&r, 3, sizeof(size_t));
  64. pushQueueType(&r, size_t, 1);
  65. pushQueueType(&r, size_t, 2);
  66. TEST_SIZE(2, r.length);
  67. clearQueue(&r);
  68. TEST_SIZE(0, r.length);
  69. destroyQueue(&r);
  70. }
  71. static void testOverall() {
  72. Queue r;
  73. initQueue(&r, 3, sizeof(size_t));
  74. pushQueueType(&r, size_t, 1);
  75. pushQueueType(&r, size_t, 2);
  76. pushQueueType(&r, size_t, 3);
  77. char buffer[128];
  78. toString(&r, buffer, sizeof(buffer), toStringSize);
  79. TEST_STRING("[1, 2, 3]", buffer);
  80. TEST_SIZE(3, r.length);
  81. popQueueData(&r);
  82. toString(&r, buffer, sizeof(buffer), toStringSize);
  83. TEST_STRING("[2, 3]", buffer);
  84. TEST_SIZE(2, r.length);
  85. pushQueueType(&r, size_t, 4);
  86. toString(&r, buffer, sizeof(buffer), toStringSize);
  87. TEST_STRING("[2, 3, 4]", buffer);
  88. TEST_SIZE(3, r.length);
  89. popQueueData(&r);
  90. toString(&r, buffer, sizeof(buffer), toStringSize);
  91. TEST_STRING("[3, 4]", buffer);
  92. TEST_SIZE(2, r.length);
  93. pushQueueType(&r, size_t, 5);
  94. toString(&r, buffer, sizeof(buffer), toStringSize);
  95. TEST_STRING("[3, 4, 5]", buffer);
  96. TEST_SIZE(3, r.length);
  97. popQueueData(&r);
  98. toString(&r, buffer, sizeof(buffer), toStringSize);
  99. TEST_STRING("[4, 5]", buffer);
  100. TEST_SIZE(2, r.length);
  101. clearQueue(&r);
  102. toString(&r, buffer, sizeof(buffer), toStringSize);
  103. TEST_STRING("[]", buffer);
  104. TEST_SIZE(0, r.length);
  105. destroyQueue(&r);
  106. }
  107. void testQueue() {
  108. testReadAndWrite();
  109. testOverflow();
  110. testRefill();
  111. testClear();
  112. testOverall();
  113. }