1 /*
2  * Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without modification,
5  * are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice, this list of
8  *    conditions and the following disclaimer.
9  *
10  * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11  *    of conditions and the following disclaimer in the documentation and/or other materials
12  *    provided with the distribution.
13  *
14  * 3. Neither the name of the copyright holder nor the names of its contributors may be used
15  *    to endorse or promote products derived from this software without specific prior written
16  *    permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #include "xts_cmsis.h"
32 
33 UINT16 g_cmsisTestTimeCount;
34 
35 /**
36  * @tc.desc      : register a test suite, this suite is used to test basic flow and interface dependency
37  * @param        : subsystem name is utils
38  * @param        : module name is utilsFile
39  * @param        : test suit name is CmsisTaskFuncTestSuite
40  */
41 LITE_TEST_SUIT(Cmsis, Cmsistimer, CmsisTimerFuncTestSuite);
42 
43 /**
44  * @tc.setup     : setup for all testcases
45  * @return       : setup result, TRUE is success, FALSE is fail
46  */
CmsisTimerFuncTestSuiteSetUp(void)47 static BOOL CmsisTimerFuncTestSuiteSetUp(void)
48 {
49     return TRUE;
50 }
51 
52 /**
53  * @tc.teardown  : teardown for all testcases
54  * @return       : teardown result, TRUE is success, FALSE is fail
55  */
CmsisTimerFuncTestSuiteTearDown(void)56 static BOOL CmsisTimerFuncTestSuiteTearDown(void)
57 {
58     return TRUE;
59 }
60 
CmsisTimerFunc001(void const *argument)61 static void CmsisTimerFunc001(void const *argument)
62 {
63     (void)argument;
64     return;
65 }
66 
CmsisTimerFunc002(void const *argument)67 static void CmsisTimerFunc002(void const *argument)
68 {
69     (void)argument;
70     g_cmsisTestTimeCount++;
71     return;
72 }
73 
74 /**
75  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0100
76  * @tc.name      : timer operation for creat with parameter osTimerOnce
77  * @tc.desc      : [C- SOFTWARE -0200]
78  */
79 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerNew001, Function | MediumTest | Level1)
80 {
81     osTimerId_t id;
82     osStatus_t status;
83     UINT32 value = 0xffff;
84     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
85     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
86     (void)osTimerDelete(id);
87     status = osDelay(DELAY_TICKS_5);
88     ICUNIT_ASSERT_EQUAL(status, osOK, status);
89     return 0;
90 };
91 
92 /**
93  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0200
94  * @tc.name      : timer operation for creat with parameter osTimerPeriodic
95  * @tc.desc      : [C- SOFTWARE -0200]
96  */
97 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerNew002, Function | MediumTest | Level1)
98 {
99     osTimerId_t id;
100     osStatus_t status;
101     UINT32 value = 0xffff;
102     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
103     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
104     (void)osTimerDelete(id);
105     status = osDelay(DELAY_TICKS_5);
106     ICUNIT_ASSERT_EQUAL(status, osOK, status);
107     return 0;
108 };
109 
110 /**
111  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0300
112  * @tc.name      : timer creat operation with NULL func and parameter osTimerOnce
113  * @tc.desc      : [C- SOFTWARE -0200]
114  */
115 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerNew003, Function | MediumTest | Level1)
116 {
117     osTimerId_t id;
118     osStatus_t status;
119     UINT32 value = 0xffff;
120     id = osTimerNew(NULL, osTimerOnce, &value, NULL);
121     ICUNIT_ASSERT_EQUAL(id, NULL, id);
122     status = osDelay(DELAY_TICKS_5);
123     ICUNIT_ASSERT_EQUAL(status, osOK, status);
124     return 0;
125 };
126 
127 /**
128  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0400
129  * @tc.name      : timer creat operation with NULL func and parameter osTimerPeriodic
130  * @tc.desc      : [C- SOFTWARE -0200]
131  */
132 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerNew004, Function | MediumTest | Level1)
133 {
134     osTimerId_t id;
135     osStatus_t status;
136     UINT32 value = 0xffff;
137     id = osTimerNew(NULL, osTimerPeriodic, &value, NULL);
138     ICUNIT_ASSERT_EQUAL(id, NULL, id);
139     status = osDelay(DELAY_TICKS_5);
140     ICUNIT_ASSERT_EQUAL(status, osOK, status);
141     return 0;
142 };
143 
144 /**
145  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0500
146  * @tc.name      : timer operation for invalid timer type
147  * @tc.desc      : [C- SOFTWARE -0200]
148  */
149 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerNew005, Function | MediumTest | Level1)
150 {
151     osTimerId_t id;
152     osStatus_t status;
153     UINT32 value = 0xffff;
154     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, INVALID_TIMER_TYPE, &value, NULL);
155     ICUNIT_ASSERT_EQUAL(id, NULL, id);
156     status = osDelay(DELAY_TICKS_5);
157     ICUNIT_ASSERT_EQUAL(status, osOK, status);
158     return 0;
159 };
160 
161 /**
162  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0600
163  * @tc.name      : timer operation for start with parameter osTimerOnce
164  * @tc.desc      : [C- SOFTWARE -0200]
165  */
166 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart001, Function | MediumTest | Level1)
167 {
168     UINT32 uwRet;
169     osTimerId_t id;
170     UINT32 value = 0xffff;
171     UINT32 millisec = MILLISEC_NUM_INT4;
172     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
173     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
174     uwRet = osTimerStart(id, millisec);
175     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
176     (void)osTimerDelete(id);
177     return 0;
178 };
179 
180 /**
181  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0700
182  * @tc.name      : timer operation for start with parameter osTimerPeriodic
183  * @tc.desc      : [C- SOFTWARE -0200]
184  */
185 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart002, Function | MediumTest | Level1)
186 {
187     UINT32 uwRet;
188     osTimerId_t id;
189     UINT32 value = 0xffff;
190     UINT32 millisec = MILLISEC_NUM_INT4;
191     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
192     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
193     uwRet = osTimerStart(id, millisec);
194     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
195     (void)osTimerDelete(id);
196     return 0;
197 };
198 
199 /**
200  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0800
201  * @tc.name      : timer operation for start with callback func and parameter osTimerOnce
202  * @tc.desc      : [C- SOFTWARE -0200]
203  */
204 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart003, Function | MediumTest | Level1)
205 {
206     UINT32 uwRet;
207     osTimerId_t id;
208     osStatus_t status;
209     UINT32 value = 0xffff;
210     UINT32 millisec = MILLISEC_NUM_INT4;
211     g_cmsisTestTimeCount = 0;
212     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc002, osTimerOnce, &value, NULL);
213     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
214     uwRet = osTimerStart(id, millisec);
215     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
216 
217     status = osDelay(DELAY_TICKS_10);
218     ICUNIT_ASSERT_EQUAL(status, osOK, status);
219     ICUNIT_ASSERT_EQUAL(1, g_cmsisTestTimeCount, g_cmsisTestTimeCount); /* 1, common data for test, no special meaning */
220     (void)osTimerDelete(id);
221     return 0;
222 };
223 
224 /**
225  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_0900
226  * @tc.name      : timer operation for start with callback func and parameter osTimerPeriodic
227  * @tc.desc      : [C- SOFTWARE -0200]
228  */
229 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart004, Function | MediumTest | Level1)
230 {
231     UINT32 uwRet;
232     osTimerId_t id;
233     osStatus_t status;
234     UINT32 value = 0xffff;
235     UINT32 millisec = MILLISEC_NUM_INT4;
236     g_cmsisTestTimeCount = 0;
237     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc002, osTimerPeriodic, &value, NULL);
238     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
239     uwRet = osTimerStart(id, millisec);
240     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
241 
242     status = osDelay(DELAY_TICKS_10);
243     ICUNIT_ASSERT_EQUAL(status, osOK, status);
244     ICUNIT_ASSERT_EQUAL(TIMER_PERIODIC_COUNT, g_cmsisTestTimeCount, g_cmsisTestTimeCount);
245     (void)osTimerDelete(id);
246     return 0;
247 };
248 
249 /**
250  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1000
251  * @tc.name      : timer start operation with ticks = 0 and parameter osTimerOnce
252  * @tc.desc      : [C- SOFTWARE -0200]
253  */
254 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart005, Function | MediumTest | Level1)
255 {
256     UINT32 uwRet;
257     osTimerId_t id;
258     UINT32 value = 0xffff;
259     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
260     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
261     uwRet = osTimerStart(id, 0);
262     ICUNIT_ASSERT_EQUAL(osErrorParameter, uwRet, uwRet);
263     (void)osTimerDelete(id);
264     return 0;
265 };
266 
267 /**
268  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1100
269  * @tc.name      : timer start operation with ticks = 0 and parameter osTimerPeriodic
270  * @tc.desc      : [C- SOFTWARE -0200]
271  */
272 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart006, Function | MediumTest | Level1)
273 {
274     UINT32 uwRet;
275     osTimerId_t id;
276     UINT32 value = 0xffff;
277     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
278     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
279     uwRet = osTimerStart(id, 0);
280     ICUNIT_ASSERT_EQUAL(osErrorParameter, uwRet, uwRet);
281     (void)osTimerDelete(id);
282     return 0;
283 };
284 
285 /**
286  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1200
287  * @tc.name      : timer start operation with timer_id = NULL
288  * @tc.desc      : [C- SOFTWARE -0200]
289  */
290 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStart007, Function | MediumTest | Level1)
291 {
292     UINT32 millisec = MILLISEC_NUM_INT4;
293     UINT32 uwRet = osTimerStart(NULL, millisec);
294     ICUNIT_ASSERT_EQUAL(osErrorParameter, uwRet, uwRet);
295     return 0;
296 };
297 
298 /**
299  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1300
300  * @tc.name      : timer operation for delete with parameter osTimerOnce
301  * @tc.desc      : [C- SOFTWARE -0200]
302  */
303 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerDelete001, Function | MediumTest | Level1)
304 {
305     UINT32 uwRet;
306     osTimerId_t id;
307     osStatus_t status;
308     UINT32 value = 0xffff;
309     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
310     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
311 
312     status = osDelay(1); /* 1, common data for test, no special meaning */
313     ICUNIT_ASSERT_EQUAL(status, osOK, status);
314     uwRet = osTimerDelete(id);
315     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
316     return 0;
317 };
318 
319 /**
320  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1400
321  * @tc.name      : timer operation for delete with parameter osTimerPeriodic
322  * @tc.desc      : [C- SOFTWARE -0200]
323  */
324 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerDelete002, Function | MediumTest | Level1)
325 {
326     UINT32 uwRet;
327     osTimerId_t id;
328     osStatus_t status;
329     UINT32 value = 0xffff;
330     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
331     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
332 
333     status = osDelay(1); /* 1, common data for test, no special meaning */
334     ICUNIT_ASSERT_EQUAL(status, osOK, status);
335     uwRet = osTimerDelete(id);
336     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
337     return 0;
338 };
339 
340 /**
341  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1500
342  * @tc.name      : timer operation for delete after osTimerStart with parameter osTimerOnce
343  * @tc.desc      : [C- SOFTWARE -0200]
344  */
345 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerDelete003, Function | MediumTest | Level1)
346 {
347     UINT32 uwRet;
348     osTimerId_t id;
349     osStatus_t status;
350     UINT32 value = 0xffff;
351     UINT32 millisec = MILLISEC_NUM_INT10;
352     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
353     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
354 
355     osTimerStart(id, millisec);
356     status = osDelay(1); /* 1, common data for test, no special meaning */
357     ICUNIT_ASSERT_EQUAL(status, osOK, status);
358     uwRet = osTimerDelete(id);
359     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
360     return 0;
361 };
362 
363 /**
364  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1600
365  * @tc.name      : timer operation for delete after osTimerStart with parameter osTimerPeriodic
366  * @tc.desc      : [C- SOFTWARE -0200]
367  */
368 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerDelete004, Function | MediumTest | Level1)
369 {
370     UINT32 uwRet;
371     osTimerId_t id;
372     osStatus_t status;
373     UINT32 value = 0xffff;
374     UINT32 millisec = MILLISEC_NUM_INT10;
375     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
376     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
377 
378     uwRet = osTimerStart(id, millisec);
379     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
380     status = osDelay(1); /* 1, common data for test, no special meaning */
381     ICUNIT_ASSERT_EQUAL(status, osOK, status);
382     uwRet = osTimerDelete(id);
383     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
384     return 0;
385 };
386 
387 /**
388  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1700
389  * @tc.name      : timer delete operation with timer_id = NULL
390  * @tc.desc      : [C- SOFTWARE -0200]
391  */
392 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerDelete005, Function | MediumTest | Level1)
393 {
394     UINT32 uwRet = osTimerDelete(NULL);
395     ICUNIT_ASSERT_EQUAL(osErrorParameter, uwRet, uwRet);
396     return 0;
397 };
398 
399 /**
400  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1800
401  * @tc.name      : timer operation for stop after osTimerStart with parameter osTimerOnce
402  * @tc.desc      : [C- SOFTWARE -0200]
403  */
404 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStop001, Function | MediumTest | Level1)
405 {
406     UINT32 uwRet;
407     osTimerId_t id;
408     osStatus_t status;
409     UINT32 value = 0xffff;
410     UINT32 millisec = MILLISEC_NUM_INT10;
411     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
412     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
413 
414     uwRet = osTimerStart(id, millisec);
415     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
416     status = osDelay(1); /* 1, common data for test, no special meaning */
417     ICUNIT_ASSERT_EQUAL(status, osOK, status);
418     uwRet = osTimerStop(id);
419     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
420     (void)osTimerDelete(id);
421     return 0;
422 };
423 
424 /**
425  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_1900
426  * @tc.name      : timer operation for stop after osTimerStart with parameter osTimerPeriodic
427  * @tc.desc      : [C- SOFTWARE -0200]
428  */
429 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStop002, Function | MediumTest | Level1)
430 {
431     UINT32 uwRet;
432     osTimerId_t id;
433     osStatus_t status;
434     UINT32 value = 0xffff;
435     UINT32 millisec = MILLISEC_NUM_INT10;
436     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
437     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
438 
439     uwRet = osTimerStart(id, millisec);
440     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
441     status = osDelay(1); /* 1, common data for test, no special meaning */
442     ICUNIT_ASSERT_EQUAL(status, osOK, status);
443     uwRet = osTimerStop(id);
444     ICUNIT_ASSERT_EQUAL(osOK, uwRet, uwRet);
445     (void)osTimerDelete(id);
446     return 0;
447 };
448 
449 /**
450  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2000
451  * @tc.name      : timer operation for stop with parameter osTimerOnce
452  * @tc.desc      : [C- SOFTWARE -0200]
453  */
454 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStop003, Function | MediumTest | Level1)
455 {
456     UINT32 uwRet;
457     osTimerId_t id;
458     osStatus_t status;
459     UINT32 value = 0xffff;
460     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
461     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
462 
463     status = osDelay(1); /* 1, common data for test, no special meaning */
464     ICUNIT_ASSERT_EQUAL(status, osOK, status);
465     uwRet = osTimerStop(id);
466     ICUNIT_ASSERT_EQUAL(osErrorResource, uwRet, uwRet);
467     (void)osTimerDelete(id);
468     return 0;
469 };
470 
471 /**
472  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2100
473  * @tc.name      : timer operation for stop with parameter osTimerPeriodic
474  * @tc.desc      : [C- SOFTWARE -0200]
475  */
476 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStop004, Function | MediumTest | Level1)
477 {
478     UINT32 uwRet;
479     osTimerId_t id;
480     osStatus_t status;
481     UINT32 value = 0xffff;
482     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
483     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
484 
485     status = osDelay(1); /* 1, common data for test, no special meaning */
486     ICUNIT_ASSERT_EQUAL(status, osOK, status);
487     uwRet = osTimerStop(id);
488     ICUNIT_ASSERT_EQUAL(osErrorResource, uwRet, uwRet);
489     (void)osTimerDelete(id);
490     return 0;
491 };
492 
493 /**
494  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2200
495  * @tc.name      : timer stop operation with timer_id = NULL
496  * @tc.desc      : [C- SOFTWARE -0200]
497  */
498 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerStop005, Function | MediumTest | Level1)
499 {
500     UINT32 uwRet = osTimerStop(NULL);
501     ICUNIT_ASSERT_EQUAL(osErrorParameter, uwRet, uwRet);
502     return 0;
503 };
504 
505 /**
506  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2300
507  * @tc.name      : timer operation for running
508  * @tc.desc      : [C- SOFTWARE -0200]
509  */
510 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning001, Function | MediumTest | Level1)
511 {
512     UINT32 uwRet;
513     osTimerId_t id;
514     UINT32 value = 0xffff;
515     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
516     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
517 
518     uwRet = osTimerIsRunning(id);
519     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
520     (void)osTimerDelete(id);
521     return 0;
522 };
523 
524 /**
525  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2400
526  * @tc.name      : timer operation for running after osTimerStart
527  * @tc.desc      : [C- SOFTWARE -0200]
528  */
529 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning002, Function | MediumTest | Level1)
530 {
531     UINT32 uwRet;
532     osTimerId_t id;
533     UINT32 value = 0xffff;
534     UINT32 millisec = MILLISEC_NUM_INT10;
535     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
536     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
537 
538     uwRet = osTimerStart(id, millisec);
539     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
540     uwRet = osTimerIsRunning(id);
541     ICUNIT_ASSERT_EQUAL(uwRet, 1, uwRet); /* 1, common data for test, no special meaning */
542     (void)osTimerDelete(id);
543     return 0;
544 };
545 
546 /**
547  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2500
548  * @tc.name      : timer operation for running after osTimerStart and osTimerStop
549  * @tc.desc      : [C- SOFTWARE -0200]
550  */
551 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning003, Function | MediumTest | Level1)
552 {
553     UINT32 uwRet;
554     osTimerId_t id;
555     UINT32 value = 0xffff;
556     UINT32 millisec = MILLISEC_NUM_INT10;
557     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
558     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
559 
560     uwRet = osTimerStart(id, millisec);
561     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
562     uwRet = osTimerStop(id);
563     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
564 
565     uwRet = osTimerIsRunning(id);
566     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
567     (void)osTimerDelete(id);
568     return 0;
569 };
570 
571 /**
572  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2600
573  * @tc.name      : timer operation for running after osTimerStart and osTimerDelete
574  * @tc.desc      : [C- SOFTWARE -0200]
575  */
576 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning004, Function | MediumTest | Level1)
577 {
578     UINT32 uwRet;
579     osTimerId_t id;
580     UINT32 value = 0xffff;
581     UINT32 millisec = MILLISEC_NUM_INT10;
582     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerOnce, &value, NULL);
583     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
584 
585     uwRet = osTimerStart(id, millisec);
586     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
587     uwRet = osTimerDelete(id);
588     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
589     uwRet = osTimerIsRunning(id);
590     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
591     return 0;
592 };
593 
594 /**
595  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2700
596  * @tc.name      : timer operation for running with parameter osTimerPeriodic
597  * @tc.desc      : [C- SOFTWARE -0200]
598  */
599 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning005, Function | MediumTest | Level1)
600 {
601     UINT32 uwRet;
602     osTimerId_t id;
603     UINT32 value = 0xffff;
604     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
605     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
606 
607     uwRet = osTimerIsRunning(id);
608     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
609     (void)osTimerDelete(id);
610     return 0;
611 };
612 
613 /**
614  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2800
615  * @tc.name      : timer operation for running after osTimerStart with parameter osTimerPeriodic
616  * @tc.desc      : [C- SOFTWARE -0200]
617  */
618 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning006, Function | MediumTest | Level1)
619 {
620     UINT32 uwRet;
621     osTimerId_t id;
622     UINT32 value = 0xffff;
623     UINT32 millisec = MILLISEC_NUM_INT10;
624     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
625     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
626 
627     uwRet = osTimerStart(id, millisec);
628     ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
629     uwRet = osTimerIsRunning(id);
630     ICUNIT_ASSERT_EQUAL(uwRet, 1, uwRet); /* 1, common data for test, no special meaning */
631     (void)osTimerDelete(id);
632     return 0;
633 };
634 
635 /**
636  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_2900
637  * @tc.name      : timer operation for running after osTimerStart and osTimerStop with parameter osTimerPeriodic
638  * @tc.desc      : [C- SOFTWARE -0200]
639  */
640 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning007, Function | MediumTest | Level1)
641 {
642     UINT32 uwRet;
643     osTimerId_t id;
644     UINT32 value = 0xffff;
645     UINT32 millisec = MILLISEC_NUM_INT10;
646     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
647     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
648 
649     uwRet = osTimerStart(id, millisec);
650     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
651     uwRet = osTimerStop(id);
652     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
653     uwRet = osTimerIsRunning(id);
654     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
655     (void)osTimerDelete(id);
656     return 0;
657 };
658 
659 /**
660  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_3000
661  * @tc.name      : timer operation for running after osTimerStart and osTimerDelete with parameter osTimerPeriodic
662  * @tc.desc      : [C- SOFTWARE -0200]
663  */
664 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning008, Function | MediumTest | Level1)
665 {
666     UINT32 uwRet;
667     osTimerId_t id;
668     UINT32 value = 0xffff;
669     UINT32 millisec = MILLISEC_NUM_INT10;
670     id = osTimerNew((osTimerFunc_t)CmsisTimerFunc001, osTimerPeriodic, &value, NULL);
671     ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
672 
673     uwRet = osTimerStart(id, millisec);
674     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
675     uwRet = osTimerDelete(id);
676     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
677     uwRet = osTimerIsRunning(id);
678     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
679     return 0;
680 };
681 
682 /**
683  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_3100
684  * @tc.name      : timer running inquiry with timer_id = NULL
685  * @tc.desc      : [C- SOFTWARE -0200]
686  */
687 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsTimerIsRunning009, Function | MediumTest | Level1)
688 {
689     UINT32 uwRet = osTimerIsRunning(NULL);
690     ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
691     return 0;
692 };
693 
694 /**
695  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_3200
696  * @tc.name      : os operation for get tick freq
697  * @tc.desc      : [C- SOFTWARE -0200]
698  */
699 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsKernelGetTickFreq001, Function | MediumTest | Level1)
700 {
701     UINT32 uwRet = osKernelGetTickFreq();
702     ICUNIT_ASSERT_EQUAL(uwRet, LOSCFG_BASE_CORE_TICK_PER_SECOND, uwRet);
703     return 0;
704 };
705 
706 /**
707  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_3300
708  * @tc.name      : os operation for get sys time freq
709  * @tc.desc      : [C- SOFTWARE -0200]
710  */
711 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsKernelGetSysTimerFreq001, Function | MediumTest | Level1)
712 {
713     UINT32 uwRet = osKernelGetSysTimerFreq();
714     ICUNIT_ASSERT_EQUAL(uwRet, OS_SYS_CLOCK, uwRet);
715     return 0;
716 };
717 
718 /**
719  * @tc.number    : SUB_KERNEL_CMSIS_TIMER_OPERATION_3400
720  * @tc.name      : os operation for get sys time count
721  * @tc.desc      : [C- SOFTWARE -0200]
722  */
723 LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsKernelGetSysTimerCount001, Function | MediumTest | Level1)
724 {
725     UINT32 uwRet = osKernelGetSysTimerCount();
726     ICUNIT_ASSERT_WITHIN_EQUAL(uwRet, 0, UINT_MAX, uwRet);
727     return 0;
728 };
729 
730 RUN_TEST_SUITE(CmsisTimerFuncTestSuite);
731 
CmsisTimerFuncTest(void)732 void CmsisTimerFuncTest(void)
733 {
734     RUN_ONE_TESTCASE(testOsTimerNew001);
735     RUN_ONE_TESTCASE(testOsTimerNew002);
736     RUN_ONE_TESTCASE(testOsTimerNew003);
737     RUN_ONE_TESTCASE(testOsTimerNew004);
738     RUN_ONE_TESTCASE(testOsTimerNew005);
739     RUN_ONE_TESTCASE(testOsTimerStart001);
740     RUN_ONE_TESTCASE(testOsTimerStart002);
741     RUN_ONE_TESTCASE(testOsTimerStart003);
742     RUN_ONE_TESTCASE(testOsTimerStart004);
743     RUN_ONE_TESTCASE(testOsTimerStart005);
744     RUN_ONE_TESTCASE(testOsTimerStart006);
745     RUN_ONE_TESTCASE(testOsTimerStart007);
746     RUN_ONE_TESTCASE(testOsTimerDelete001);
747     RUN_ONE_TESTCASE(testOsTimerDelete002);
748     RUN_ONE_TESTCASE(testOsTimerDelete003);
749     RUN_ONE_TESTCASE(testOsTimerDelete004);
750     RUN_ONE_TESTCASE(testOsTimerDelete005);
751     RUN_ONE_TESTCASE(testOsTimerStop001);
752     RUN_ONE_TESTCASE(testOsTimerStop002);
753     RUN_ONE_TESTCASE(testOsTimerStop003);
754     RUN_ONE_TESTCASE(testOsTimerStop004);
755     RUN_ONE_TESTCASE(testOsTimerStop005);
756     RUN_ONE_TESTCASE(testOsTimerIsRunning001);
757     RUN_ONE_TESTCASE(testOsTimerIsRunning002);
758     RUN_ONE_TESTCASE(testOsTimerIsRunning003);
759     RUN_ONE_TESTCASE(testOsTimerIsRunning004);
760     RUN_ONE_TESTCASE(testOsTimerIsRunning005);
761     RUN_ONE_TESTCASE(testOsTimerIsRunning006);
762     RUN_ONE_TESTCASE(testOsTimerIsRunning007);
763     RUN_ONE_TESTCASE(testOsTimerIsRunning008);
764     RUN_ONE_TESTCASE(testOsTimerIsRunning009);
765     RUN_ONE_TESTCASE(testOsKernelGetTickFreq001);
766     RUN_ONE_TESTCASE(testOsKernelGetSysTimerFreq001);
767     RUN_ONE_TESTCASE(testOsKernelGetSysTimerCount001);
768 }