QueueTests.c 3.3 KB

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