QueueTests.c 3.7 KB

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