1 /* ------------------------------------------------------------------------ */
2 /* Hyper Operating System V4 μITRON4.0仕様 Real-Time OS */
3 /* μカーネル キュー の単体テストモジュール */
5 /* Copyright (C) 1998-2006 by Project HOS */
6 /* http://sourceforge.jp/projects/hos/ */
7 /* ------------------------------------------------------------------------ */
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"
27 #define TEST_ASSERT(a) assert(a)
42 #define TEST_QUE_NUM 6
44 static _KERNEL_T_QUE test_que;
47 #if _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY /* %en{block array}%jp{TCBを単純配列で管理} */
49 _KERNEL_T_TCB _kernel_tcb_tbl[TEST_QUE_NUM]; /* %jp{タスクコントロールブロックのポインタを配列で持つ} */
51 #elif _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_PTRARRAY /* pointer array */
54 _KERNEL_T_TCB test_tcb[TEST_QUE_NUM];
55 _KERNEL_T_TCB *_kernel_tcb_tbl[TEST_QUE_NUM] = /* %jp{タスクコントロールブロックのポインタを配列で持つ} */
69 /* キューが全部外れていることをチェック */
70 BOOL check_que_empty(void)
72 _KERNEL_T_TSKHDL tskhdl;
75 if ( _KERNEL_REF_QUE(&test_que) != _KERNEL_TSKHDL_NULL )
77 return FALSE; /* 異常 */
80 for ( i = 1; i <= TEST_QUE_NUM; i++ )
82 tskhdl = _KERNEL_TSK_ID2TSKHDL(i);
84 if ( _KERNEL_TSK_GET_QUE(tskhdl) != NULL )
86 return FALSE; /* 異常 */
97 _KERNEL_T_TSKHDL tskhdl;
100 _KERNEL_CRE_QUE(&test_que);
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);
116 /* ----------------------------- */
118 /* ----------------------------- */
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
265 /* ----------------------------- */
267 /* ----------------------------- */
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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());
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));
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());