From ca2eb68dcd347c8c5b0bf8f5ba1c4eec7d303c14 Mon Sep 17 00:00:00 2001 From: David Kerkeslager Date: Sat, 30 Jul 2016 13:26:25 -0400 Subject: [PATCH] Wrote a test around the mpsc_queue --- vm/{vm.c => mpsc_queue.c} | 6 ---- vm/mpsc_queue_test.c | 59 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 6 deletions(-) rename vm/{vm.c => mpsc_queue.c} (97%) create mode 100644 vm/mpsc_queue_test.c diff --git a/vm/vm.c b/vm/mpsc_queue.c similarity index 97% rename from vm/vm.c rename to vm/mpsc_queue.c index bc6588c..a665a0f 100644 --- a/vm/vm.c +++ b/vm/mpsc_queue.c @@ -106,7 +106,6 @@ void* dequeue(Queue* queue) void freeQueue(Queue* queue, void (*itemFreer)(void*)) { QueueNode* current = queue->head; - free(queue); while(current != NULL) { @@ -116,8 +115,3 @@ void freeQueue(Queue* queue, void (*itemFreer)(void*)) current = temp; } } - -int main(int argc, char** argv) -{ - return EXIT_SUCCESS; -} diff --git a/vm/mpsc_queue_test.c b/vm/mpsc_queue_test.c new file mode 100644 index 0000000..be869c8 --- /dev/null +++ b/vm/mpsc_queue_test.c @@ -0,0 +1,59 @@ +#include +#include + +#include "mpsc_queue.c" + +void noopFreer(void* _) { } + +bool test_single_threaded() +{ + Queue queue; + initializeQueue(&queue); + + int inputs[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + + for(int i = 0; i < 10; i++) + { + enqueue(&queue, &(inputs[i])); + } + + int* outputs[10]; + int index = 0; + + while(!isEmpty(&queue)) + { + outputs[index++] = dequeue(&queue); + } + + for(int i = 0; i < 10; i++) + { + assert(i == *(outputs[i])); + } + + freeQueue(&queue, noopFreer); + + return true; +} + +int main(int argc, char** argv) +{ + #define TEST_COUNT 1 + bool (*tests[TEST_COUNT])() = { + test_single_threaded + }; + + for(int i = 0; i < TEST_COUNT; i++) + { + if(tests[i]()) + { + printf("."); + } + + else + { + printf("F"); + } + } + + return EXIT_SUCCESS; +} -- 2.20.1