Mercurial > hg > Members > Moririn
comparison src/parallel_execution/test/stack_test.c @ 215:50d0d1b468aa
Fix stack_test
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Jan 2017 06:48:59 +0900 |
parents | b6ffdd99e525 |
children | 421ea91dd76c |
comparison
equal
deleted
inserted
replaced
214:da8ca04eb4f3 | 215:50d0d1b468aa |
---|---|
1 #include "../stack.h" | 1 #include "../stack.h" |
2 #include "../context.h" | 2 #include "../context.h" |
3 #include "../origin_cs.h" | 3 #include "../origin_cs.h" |
4 #include <assert.h> | 4 #include <assert.h> |
5 | |
5 extern __code initContext(struct Context* context); | 6 extern __code initContext(struct Context* context); |
6 | 7 |
7 __code stack_test1(struct Context* context, struct Task* task, struct Stack* stack) { | 8 __code stack_test1(struct Context* context, struct Task* task, struct Stack* stack) { |
8 task->code = C_stack_test1; | 9 task->code = C_stack_test1; |
9 stack->next = C_stack_test2; | 10 stack->next = C_stack_test2; |
10 stack->data = (union Data*)task; | 11 stack->data = (union Data*)task; |
11 goto meta(context, stack->push); | 12 goto meta(context, stack->stack->Stack.push); |
12 } | 13 } |
13 | 14 |
14 __code stack_test1_stub(struct Context* context) { | 15 __code stack_test1_stub(struct Context* context) { |
15 Task* task = &ALLOCATE(context, Task)->Task; | 16 Task* task = &ALLOCATE(context, Task)->Task; |
16 struct Stack* stack = &(createSingleLinkedStack(context)->Stack); | 17 struct Stack* stack = &(createSingleLinkedStack(context)->Stack); |
17 assert(stack->stack->SingleLinkedStack.top == NULL); | 18 assert(stack->stack->SingleLinkedStack.top == NULL); |
18 context->data[D_Stack]->Stack.stack = (union Data*)stack; | 19 context->data[D_Stack]->Stack.stack = (union Data*)stack; |
19 goto stack_test1(context, | 20 goto stack_test1(context, |
20 task, | 21 task, |
21 &context->data[D_Stack]->Stack.stack->Stack); | 22 &context->data[D_Stack]->Stack); |
22 } | 23 } |
23 | 24 |
24 __code stack_test2(struct Context* context, struct Task* task, struct Stack* stack) { | 25 __code stack_test2(struct Context* context, struct Task* task, struct Stack* stack) { |
25 task->code = C_stack_test2; | 26 task->code = C_stack_test2; |
26 stack->next = C_stack_test3; | 27 stack->next = C_stack_test3; |
27 stack->data = (union Data*)task; | 28 stack->data = (union Data*)task; |
28 goto meta(context, stack->push); | 29 goto meta(context, stack->stack->Stack.push); |
29 } | 30 } |
30 | 31 |
31 __code stack_test2_stub(struct Context* context) { | 32 __code stack_test2_stub(struct Context* context) { |
32 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); | 33 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); |
33 Task* task = &ALLOCATE(context, Task)->Task; | 34 Task* task = &ALLOCATE(context, Task)->Task; |
34 goto stack_test2(context, | 35 goto stack_test2(context, |
35 task, | 36 task, |
36 &context->data[D_Stack]->Stack.stack->Stack); | 37 &context->data[D_Stack]->Stack); |
37 } | 38 } |
38 | 39 |
39 __code stack_test3(struct Context* context, struct Stack* stack) { | 40 __code stack_test3(struct Context* context, struct Stack* stack) { |
40 stack->next = C_stack_test4; | 41 stack->next = C_stack_test4; |
41 goto meta(context, stack->pop); | 42 goto meta(context, stack->stack->Stack.pop); |
42 } | 43 } |
43 | 44 |
44 __code stack_test3_stub(struct Context* context) { | 45 __code stack_test3_stub(struct Context* context) { |
45 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test2); | 46 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test2); |
46 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); | |
47 goto stack_test3(context, | 47 goto stack_test3(context, |
48 &context->data[D_Stack]->Stack.stack->Stack); | 48 &context->data[D_Stack]->Stack); |
49 } | 49 } |
50 | 50 |
51 __code stack_test4(struct Context* context) { | 51 __code stack_test4(struct Context* context) { |
52 goto meta(context, exit_code); | 52 goto meta(context, C_exit_code); |
53 } | 53 } |
54 | 54 |
55 __code stack_test4_stub(struct Context* context) { | 55 __code stack_test4_stub(struct Context* context) { |
56 assert(context->data[D_Stack]->Stack.stack->Stack.data->Task.code == C_stack_test1); | 56 assert(context->data[D_Stack]->Stack.data->Task.code == C_stack_test2); |
57 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); | 57 assert(context->data[D_Stack]->Stack.stack->Stack.stack->SingleLinkedStack.top->data->Task.code == C_stack_test1); |
58 goto stack_test4(context); | 58 goto stack_test4(context); |
59 } | 59 } |
60 | 60 |
61 int main(int argc, char const* argv[]) { | 61 int main(int argc, char const* argv[]) { |