OSDN Git Service

import
[hos/hos-v4a.git] / test / que / test_que.c
1 /* ------------------------------------------------------------------------ */
2 /*  Hyper Operating System V4  μITRON4.0仕様 Real-Time OS                  */
3 /*  μカーネル キュー の単体テストモジュール                                */
4 /*                                                                          */
5 /*                                  Copyright (C) 1998-2006 by Project HOS  */
6 /*                                  http://sourceforge.jp/projects/hos/     */
7 /* ------------------------------------------------------------------------ */
8
9
10
11 #include <stdio.h>
12 #include "kernel.h"
13 #include "arch/proc/win/win32/procatr.h"
14 #include "arch/proc/win/win32/proc.h"
15 #include "arch/irc/none/ircatr.h"
16 #include "arch/irc/none/irc.h"
17 #include "config/cfgknl.h"
18 #include "parser/parsknl.h"
19 #include "core/opttyp.h"
20 #include "object/tskobj.h"
21 #include "config/cfgerr.h"
22 #include "parser/parserr.h"
23
24
25
26 #include <assert.h>
27 #define TEST_ASSERT(a)          assert(a)
28
29 int que_test(void);
30
31
32 int main()
33 {
34         que_test();
35
36         printf("OK\n");
37
38         return 0;
39 }
40
41
42 #define TEST_QUE_NUM    6
43
44 static _KERNEL_T_QUE test_que; 
45
46
47 #if _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY           /* %en{block array}%jp{TCBを単純配列で管理} */
48
49 _KERNEL_T_TCB _kernel_tcb_tbl[TEST_QUE_NUM];                    /* %jp{タスクコントロールブロックのポインタを配列で持つ} */
50
51 #elif _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_PTRARRAY         /* pointer array */
52
53
54 _KERNEL_T_TCB test_tcb[TEST_QUE_NUM];
55 _KERNEL_T_TCB *_kernel_tcb_tbl[TEST_QUE_NUM] =          /* %jp{タスクコントロールブロックのポインタを配列で持つ} */
56         {
57                 &test_tcb[0],
58                 &test_tcb[1],
59                 &test_tcb[2],
60                 &test_tcb[3],
61                 &test_tcb[4],
62                 &test_tcb[5],
63         };
64
65 #endif
66
67
68
69 /* キューが全部外れていることをチェック */
70 BOOL check_que_empty(void)
71 {
72         _KERNEL_T_TSKHDL tskhdl;
73         int i;
74
75         if ( _KERNEL_REF_QUE(&test_que) != _KERNEL_TSKHDL_NULL )
76         {
77                 return FALSE;           /* 異常 */
78         }
79
80         for ( i = 1; i <= TEST_QUE_NUM; i++ )
81         {
82                 tskhdl = _KERNEL_TSK_ID2TSKHDL(i);
83
84                 if ( _KERNEL_TSK_GET_QUE(tskhdl) != NULL )
85                 {
86                         return FALSE;   /* 異常 */
87                 }
88         }
89
90         return TRUE;
91 }
92
93
94
95 int que_test(void)
96 {
97         _KERNEL_T_TSKHDL tskhdl;
98
99         /* Initialize */
100         _KERNEL_CRE_QUE(&test_que);
101
102         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(1), NULL);
103         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(1), 1);
104         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(2), NULL);
105         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(2), 2);
106         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(3), NULL);
107         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(3), 3);
108         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(4), NULL);
109         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(4), 1);
110         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(5), NULL);
111         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(5), 2);
112         _KERNEL_TSK_SET_QUE   (_KERNEL_TSK_ID2TSKHDL(6), NULL);
113         _KERNEL_TSK_SET_TSKPRI(_KERNEL_TSK_ID2TSKHDL(6), 3);
114
115
116         /* ----------------------------- */
117         /*           FIFO順              */
118         /* ----------------------------- */
119
120         /* 1個の付け外し */
121         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
122         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
123         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
124         TEST_ASSERT(check_que_empty());
125
126         /* 1個の付け外し(頭抜き)  */
127         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
128         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
129         tskhdl = _KERNEL_RMH_QUE(&test_que);
130         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(1));
131         TEST_ASSERT(check_que_empty());
132
133         /* 2個の付け外し(先頭外し) */
134         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
135         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
136         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
137         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
138         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
139         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
140         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
141         TEST_ASSERT(check_que_empty());
142
143         /* 2個の付け外し(末尾外し) */
144         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
145         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
146         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
147         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
148         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
149         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
150         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
151         TEST_ASSERT(check_que_empty());
152
153         /* 2個の付け外し(頭抜き) */
154         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
155         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
156         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
157         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
158         tskhdl = _KERNEL_RMH_QUE(&test_que);
159         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(1));
160         tskhdl = _KERNEL_RMH_QUE(&test_que);
161         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(2));
162         TEST_ASSERT(check_que_empty());
163
164         /* 3個の付け外し(先→中→末の順で取り外し) */
165         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
166         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
167         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
168         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
169         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
170         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
171         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
172         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
173         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
174         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
175         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
176         TEST_ASSERT(check_que_empty());
177         
178         /* 3個の付け外し(先→末→中の順で取り外し) */
179         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
180         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
181         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
182         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
183         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
184         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
185         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
186         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
187         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
188         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
189         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
190         TEST_ASSERT(check_que_empty());
191
192         /* 3個の付け外し(中→先→末の順で取り外し) */
193         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
194         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
195         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
196         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
197         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
198         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
199         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
200         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
201         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
202         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
203         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
204         TEST_ASSERT(check_que_empty());
205
206         /* 3個の付け外し(中→末→先の順で取り外し) */
207         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
208         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
209         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
210         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
211         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
212         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
213         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
214         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
215         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
216         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
217         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
218         TEST_ASSERT(check_que_empty());
219
220         /* 3個の付け外し(末→先→中の順で取り外し) */
221         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
222         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
223         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
224         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
225         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
226         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
227         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
228         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
229         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
230         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
231         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
232         TEST_ASSERT(check_que_empty());
233
234         /* 3個の付け外し(末→中→先の順で取り外し) */
235         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
236         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
237         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
238         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
239         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
240         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
241         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
242         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
243         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
244         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
245         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
246         TEST_ASSERT(check_que_empty());
247
248         /* 3個の付け外し(頭抜き) */
249         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TFIFO);
250         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
251         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TFIFO);
252         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
253         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TFIFO);
254         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
255         tskhdl = _KERNEL_RMH_QUE(&test_que);
256         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(1));
257         tskhdl = _KERNEL_RMH_QUE(&test_que);
258         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(2));
259         tskhdl = _KERNEL_RMH_QUE(&test_que);
260         TEST_ASSERT(tskhdl == _KERNEL_TSK_ID2TSKHDL(3));
261         TEST_ASSERT(check_que_empty());
262
263
264         
265         /* ----------------------------- */
266         /*          優先度順             */
267         /* ----------------------------- */
268
269         /* 1個の付け外し */
270         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
271         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
272         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
273         TEST_ASSERT(check_que_empty());
274
275
276         /* 2個の付け外し(優先度:1→2) */
277         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
278         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
279         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
280         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
281         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
282         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
283         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
284         TEST_ASSERT(check_que_empty());
285
286         /* 2個の付け外し(優先度:2→1) */
287         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
288         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
289         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
290         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
291         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
292         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
293         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
294         TEST_ASSERT(check_que_empty());
295
296         /* 2個の付け外し(優先度:2→2 (FIFO順になるはず)) */
297         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
298         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
299         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(5), TA_TPRI);
300         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
301         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
302         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(5));
303         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(5));
304         TEST_ASSERT(check_que_empty());
305         
306         /* 上の逆 */
307         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(5), TA_TPRI);
308         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(5));
309         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
310         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(5));
311         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(5));
312         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
313         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
314         TEST_ASSERT(check_que_empty());
315
316
317         /* 3個の付け外し(優先度:1→2→3) */
318         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
319         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
320         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
321         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
322         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
323         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
324         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
325         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
326         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
327         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
328         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
329         TEST_ASSERT(check_que_empty());
330
331         /* 3個の付け外し(優先度:1→3→2) */
332         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
333         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
334         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
335         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
336         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
337         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
338         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
339         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
340         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
341         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
342         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
343         TEST_ASSERT(check_que_empty());
344
345         /* 3個の付け外し(優先度:2→1→3) */
346         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
347         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
348         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
349         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
350         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
351         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
352         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
353         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
354         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
355         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
356         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
357         TEST_ASSERT(check_que_empty());
358
359         /* 3個の付け外し(優先度:2→3→1) */
360         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
361         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
362         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
363         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
364         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
365         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
366         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
367         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
368         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
369         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
370         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
371         TEST_ASSERT(check_que_empty());
372
373         /* 3個の付け外し(優先度:3→1→2) */
374         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
375         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
376         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
377         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
378         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
379         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
380         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
381         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
382         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
383         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
384         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
385         TEST_ASSERT(check_que_empty());
386
387         /* 3個の付け外し(優先度:3→2→1) */
388         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
389         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
390         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
391         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
392         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
393         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
394         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
395         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
396         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
397         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
398         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
399         TEST_ASSERT(check_que_empty());
400
401         /* 3個の付け外し(同優先混ぜ:先頭) */
402         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
403         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
404         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
405         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
406         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
407         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
408         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(4), TA_TPRI);
409         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
410         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
411         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(4));
412         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(4));
413         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
414         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
415         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
416         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
417         TEST_ASSERT(check_que_empty());
418
419         /* 3個の付け外し(同優先混ぜ:中) */
420         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
421         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
422         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
423         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
424         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
425         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
426         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(5), TA_TPRI);
427         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
428         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
429         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
430         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
431         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(5));
432         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(5));
433         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
434         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
435         TEST_ASSERT(check_que_empty());
436
437         /* 3個の付け外し(同優先混ぜ:末尾) */
438         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
439         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
440         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
441         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
442         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
443         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
444         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(6), TA_TPRI);
445         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
446         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
447         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
448         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
449         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
450         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
451         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(6));
452         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(6));
453         TEST_ASSERT(check_que_empty());
454
455
456         /* ALL:おまけ */
457         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(1), TA_TPRI);
458         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
459         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(2), TA_TPRI);
460         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
461         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(3), TA_TPRI);
462         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
463         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(6), TA_TPRI);
464         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
465         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(5), TA_TPRI);
466         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
467         _KERNEL_ADD_QUE(&test_que, _KERNEL_TSK_ID2TSKHDL(4), TA_TPRI);
468         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(1));
469
470         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(1));
471         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(4));
472         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(4));
473         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(2));
474         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(2));
475         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(5));
476         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(5));
477         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(3));
478         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(3));
479         TEST_ASSERT(_KERNEL_REF_QUE(&test_que) == _KERNEL_TSK_ID2TSKHDL(6));
480         _KERNEL_TRM_QUE(_KERNEL_TSK_ID2TSKHDL(6));
481         TEST_ASSERT(check_que_empty());
482         
483         return TRUE;
484 }
485
486
487