#include "../Tests.h" #include "core/Queue.h" #include "core/ToString.h" #include "core/Utility.h" static void testReadAndWrite() { Queue r; initQueue(&r, 5, sizeof(size_t)); TEST_SIZE(0, r.length); pushQueueType(&r, size_t, 4); TEST_SIZE(1, r.length); TEST_SIZE(4, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(0, r.length); destroyQueue(&r); } static void testOverflow() { Queue r; initQueue(&r, 3, sizeof(size_t)); pushQueueType(&r, size_t, 1); pushQueueType(&r, size_t, 2); pushQueueType(&r, size_t, 3); pushQueueType(&r, size_t, 4); pushQueueType(&r, size_t, 5); TEST_SIZE(3, r.length); TEST_SIZE(1, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(2, r.length); TEST_SIZE(2, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(1, r.length); TEST_SIZE(3, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(0, r.length); destroyQueue(&r); } static void testRefill() { Queue r; initQueue(&r, 3, sizeof(size_t)); pushQueueType(&r, size_t, 1); pushQueueType(&r, size_t, 2); pushQueueType(&r, size_t, 3); pushQueueType(&r, size_t, 4); TEST_SIZE(3, r.length); TEST_SIZE(1, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(2, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(3, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(0, r.length); pushQueueType(&r, size_t, 5); pushQueueType(&r, size_t, 6); TEST_SIZE(2, r.length); TEST_SIZE(5, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(6, getTypedQueueIndex(&r, 0, size_t)); popQueueData(&r); TEST_SIZE(0, r.length); destroyQueue(&r); } static void testClear() { Queue r; initQueue(&r, 3, sizeof(size_t)); pushQueueType(&r, size_t, 1); pushQueueType(&r, size_t, 2); TEST_SIZE(2, r.length); clearQueue(&r); TEST_SIZE(0, r.length); destroyQueue(&r); } static void testOverall() { Queue r; initQueue(&r, 3, sizeof(size_t)); pushQueueType(&r, size_t, 1); pushQueueType(&r, size_t, 2); pushQueueType(&r, size_t, 3); char buffer[128]; toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[1, 2, 3]", buffer); TEST_SIZE(3, r.length); popQueueData(&r); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[2, 3]", buffer); TEST_SIZE(2, r.length); pushQueueType(&r, size_t, 4); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[2, 3, 4]", buffer); TEST_SIZE(3, r.length); popQueueData(&r); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[3, 4]", buffer); TEST_SIZE(2, r.length); pushQueueType(&r, size_t, 5); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[3, 4, 5]", buffer); TEST_SIZE(3, r.length); popQueueData(&r); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[4, 5]", buffer); TEST_SIZE(2, r.length); clearQueue(&r); toString(&r, buffer, sizeof(buffer), toStringSize); TEST_STRING("[]", buffer); TEST_SIZE(0, r.length); destroyQueue(&r); } void testQueue() { testReadAndWrite(); testOverflow(); testRefill(); testClear(); testOverall(); }