QueueTests.c 3.3 KB

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