Mercurial > hg > Members > Moririn
diff src/parallel_execution/test/stack_test.c @ 202:42dbe54332a0
add test
author | mir3636 |
---|---|
date | Mon, 19 Dec 2016 19:42:49 +0900 |
parents | src/parallel_execution/test/queue_test.c@57a11c15ff4c |
children | 1b15f02ec713 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parallel_execution/test/stack_test.c Mon Dec 19 19:42:49 2016 +0900 @@ -0,0 +1,69 @@ +#include "../stack.h" +#include "../context.h" +#include "../origin_cs.h" +#include <assert.h> + + +__code stack_test1(struct Context* context, struct Task* task, struct Stack* stack) { + task->code = C_StackTest1; + stack->next = C_StackTest2; + stack->data = (union Data*)task; + goto meta(context, stack->stack->stack.put); +} + +__code stack_test1_stub(struct Context* context) { + Task* task = &ALLOCATE(context, Task)->Task; + struct Stack* stack = &(createSingleLinkedStack(context)->stack); + assert(stack->stack->singleLinkedStack.top == NULL); + assert(stack->stack->singleLinkedStack.last == NULL); + context->data[D_Stack]->stack.stack = (union Data*)stack; + goto stack_test1(context, + task, + &context->data[D_Stack]->stack); +} + +__code stack_test2(struct Context* context, struct Task* task, struct Stack* stack) { + task->code = C_StackTest2; + stack->next = C_StackTest3; + stack->data = (union Data*)task; + goto meta(context, stack->stack->stack.put); +} + +__code stack_test2_stub(struct Context* context) { + assert(((struct Task)context->data[D_Stack]->stack.stack->stack.stack->singleLinkedStack.top->data)->code == C_StackTest1) + assert(((struct Task)context->data[D_Stack]->stack.stack->stack.stack->singleLinkedStack.top->data)->code == C_StackTest1) + Task* task = &ALLOCATE(context, Task)->Task; + goto stack_test2(context, + task, + &context->data[D_Stack]->stack->stack); +} + +__code stack_test3(struct Context* context, struct Stack* stack) { + stack->next = C_StackTest4; + goto meta(context, stack->stack->take) +} + +__code stack_test3_stub(struct Context* context) { + assert(((struct Task)context->data[D_Stack]->stack.stack->stack.stack->singleLinkedStack.top->data)->code == C_StackTest2) + assert(((struct Task)context->data[D_Stack]->stack.stack->stack.stack->singleLinkedStack.top->data)->code == C_StackTest1) + goto stack_test3(context, + &context->data[D_Stack]->stack); +} + +__code stack_test4(struct Context* context) { + goto meta(context, Exit); +} + +__code stack_test4_stub(struct Context* context) { + assert(((struct Task)context->data[D_Stack]->stack.stack.data)->code == C_StackTest1) + assert(((struct Task)context->data[D_Stack]->stack.stack.last->data)->code == C_StackTest2) + goto stack_test4(context, + &context->data[D_Stack]->stack->stack); +} + +int main(int argc, char const* argv[]) { + struct Context* main_context = NEW(struct Context); + initContext(main_context); + main_context->next = C_StackTest1; + goto start_code(main_context); +}