| 309 | } |
| 310 | |
| 311 | static void test_MultiAbort() { |
| 312 | // reset X = 1 |
| 313 | // issue a task X += 2 |
| 314 | // abort task multiple times |
| 315 | // validate X = 1 |
| 316 | |
| 317 | X = 1; |
| 318 | int Y = 2; |
| 319 | AddTaskData data = _AddTaskData_New(add_task, (void *)&Y); |
| 320 | |
| 321 | // issue task X += 2 |
| 322 | CronTaskHandle task_handle = Cron_AddTask(15, _AddTaskData_Execute, NULL, |
| 323 | &data); |
| 324 | |
| 325 | // abort task multiple times, should not crash or hang |
| 326 | for(int i = 0; i < 20; i++) { |
| 327 | Cron_AbortTask(task_handle); |
| 328 | } |
| 329 | |
| 330 | if (_AddTaskData_HasStarted(data)) { |
| 331 | _AddTaskData_WaitForCompletion(data); |
| 332 | } |
| 333 | |
| 334 | _AddTaskData_Free(data); |
| 335 | |
| 336 | // task should have been aborted prior to its execution |
| 337 | // expecting X = 1 |
| 338 | TEST_ASSERT(X == 1); |
| 339 | } |
| 340 | |
| 341 | static void test_abortNoneExistingTask() { |
| 342 | // reset X = 1 |
nothing calls this directly
no test coverage detected