Mercurial > hg > Members > Moririn
diff src/parallel_execution/test/queue_test.c @ 182:57a11c15ff4c
Add queue_test
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 14 Dec 2016 21:33:11 +0900 |
parents | |
children | 25db17f32ac2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parallel_execution/test/queue_test.c Wed Dec 14 21:33:11 2016 +0900 @@ -0,0 +1,69 @@ +#include "../queue.h" +#include "../context.h" +#include "../origin_cs.h" +#include <assert.h> + + +__code queue_test1(struct Context* context, struct Task* task, struct Queue* queue) { + task->code = C_QueueTest1; + queue->next = C_QueueTest2; + queue->data = (union Data*)task; + goto meta(context, queue->queue->queue.put); +} + +__code queue_test1_stub(struct Context* context) { + Task* task = &ALLOCATE(context, Task)->Task; + struct Queue* queue = &(createSingleLinkedQueue(context)->queue); + assert(queue->queue->singleLinkedQueue.top == NULL); + assert(queue->queue->singleLinkedQueue.last == NULL); + context->data[D_Queue]->queue.queue = (union Data*)queue; + goto queue_test1(context, + task, + &context->data[D_Queue]->queue); +} + +__code queue_test2(struct Context* context, struct Task* task, struct Queue* queue) { + task->code = C_QueueTest2; + queue->next = C_QueueTest3; + queue->data = (union Data*)task; + goto meta(context, queue->queue->queue.put); +} + +__code queue_test2_stub(struct Context* context) { + assert(((struct Task)context->data[D_Queue]->queue.queue->queue.queue->singleLinkedQueue.top->data)->code == C_QueueTest1) + assert(((struct Task)context->data[D_Queue]->queue.queue->queue.queue->singleLinkedQueue.top->data)->code == C_QueueTest1) + Task* task = &ALLOCATE(context, Task)->Task; + goto queue_test2(context, + task, + &context->data[D_Queue]->queue->queue); +} + +__code queue_test3(struct Context* context, struct Queue* queue) { + queue->next = C_QueueTest4; + goto meta(context, queue->queue->take) +} + +__code queue_test3_stub(struct Context* context) { + assert(((struct Task)context->data[D_Queue]->queue.queue->queue.queue->singleLinkedQueue.top->data)->code == C_QueueTest2) + assert(((struct Task)context->data[D_Queue]->queue.queue->queue.queue->singleLinkedQueue.top->data)->code == C_QueueTest1) + goto queue_test3(context, + &context->data[D_Queue]->queue); +} + +__code queue_test4(struct Context* context) { + goto meta(context, Exit); +} + +__code queue_test4_stub(struct Context* context) { + assert(((struct Task)context->data[D_Queue]->queue.queue.data)->code == C_QueueTest1) + assert(((struct Task)context->data[D_Queue]->queue.queue.last->data)->code == C_QueueTest2) + goto queue_test4(context, + &context->data[D_Queue]->queue->queue); +} + +int main(int argc, char const* argv[]) { + struct Context* main_context = NEW(struct Context); + initContext(main_context); + main_context->next = C_QueueTest1; + goto start_code(main_context); +}