#include "../Tests.h" #include "core/Queue.h" #include "core/ToString.h" #include "core/Utility.h" static void testReadAndWrite() { CoreQueue r; coreInitQueue(&r, 5, sizeof(size_t)); CORE_TEST_SIZE(0, r.length); coreQueueAdd(&r, size_t, 4); CORE_TEST_SIZE(1, r.length); CORE_TEST_SIZE(4, coreQueueGet(&r, 0, size_t)); CORE_TEST_SIZE(4, coreQueueGetC(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(0, r.length); coreDestroyQueue(&r); } static void testOverflow() { CoreQueue r; coreInitQueue(&r, 3, sizeof(size_t)); coreQueueAdd(&r, size_t, 1); coreQueueAdd(&r, size_t, 2); coreQueueAdd(&r, size_t, 3); coreQueueAdd(&r, size_t, 4); coreQueueAdd(&r, size_t, 5); CORE_TEST_SIZE(3, r.length); CORE_TEST_SIZE(1, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(2, r.length); CORE_TEST_SIZE(2, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(1, r.length); CORE_TEST_SIZE(3, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(0, r.length); coreDestroyQueue(&r); } static void testRefill() { CoreQueue r; coreInitQueue(&r, 3, sizeof(size_t)); coreQueueAdd(&r, size_t, 1); coreQueueAdd(&r, size_t, 2); coreQueueAdd(&r, size_t, 3); coreQueueAdd(&r, size_t, 4); CORE_TEST_SIZE(3, r.length); CORE_TEST_SIZE(1, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(2, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(3, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(0, r.length); coreQueueAdd(&r, size_t, 5); coreQueueAdd(&r, size_t, 6); CORE_TEST_SIZE(2, r.length); CORE_TEST_SIZE(5, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(6, coreQueueGet(&r, 0, size_t)); coreQueueRemove(&r); CORE_TEST_SIZE(0, r.length); coreDestroyQueue(&r); } static void testClear() { CoreQueue r; coreInitQueue(&r, 3, sizeof(size_t)); coreQueueAdd(&r, size_t, 1); coreQueueAdd(&r, size_t, 2); CORE_TEST_SIZE(2, r.length); coreClearQueue(&r); CORE_TEST_SIZE(0, r.length); coreDestroyQueue(&r); } static void testOverall() { CoreQueue r; coreInitQueue(&r, 3, sizeof(size_t)); coreQueueAdd(&r, size_t, 1); coreQueueAdd(&r, size_t, 2); coreQueueAdd(&r, size_t, 3); char buffer[128]; coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[1, 2, 3]", buffer); CORE_TEST_SIZE(3, r.length); coreQueueRemove(&r); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[2, 3]", buffer); CORE_TEST_SIZE(2, r.length); coreQueueAdd(&r, size_t, 4); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[2, 3, 4]", buffer); CORE_TEST_SIZE(3, r.length); coreQueueRemove(&r); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[3, 4]", buffer); CORE_TEST_SIZE(2, r.length); coreQueueAdd(&r, size_t, 5); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[3, 4, 5]", buffer); CORE_TEST_SIZE(3, r.length); coreQueueRemove(&r); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[4, 5]", buffer); CORE_TEST_SIZE(2, r.length); coreClearQueue(&r); coreToStringQueue(&r, buffer, sizeof(buffer), coreToStringSize); CORE_TEST_STRING("[]", buffer); CORE_TEST_SIZE(0, r.length); coreDestroyQueue(&r); } void testQueue() { testReadAndWrite(); testOverflow(); testRefill(); testClear(); testOverall(); }