MCPcopy Create free account
hub / github.com/DISTORTEC/distortos / phase4

Function phase4

test/Thread/ThreadOperationsTestCase.cpp:275–324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

273 */
274
275bool phase4()
276{
277 const auto allocatedMemory = mallinfo().uordblks;
278
279 {
280 SequenceAsserter sequenceAsserter;
281 auto testThread = makeAndStartDynamicThread({testThreadStackSize, UINT8_MAX},
282 [&sequenceAsserter]()
283 {
284 sequenceAsserter.sequencePoint(0);
285 ThisThread::exit();
286 sequenceAsserter.sequencePoint(1);
287 });
288 if (testThread.join() != 0)
289 return false;
290
291 if (sequenceAsserter.assertSequence(1) == false)
292 return false;
293 }
294
295 if (mallinfo().uordblks != allocatedMemory) // dynamic memory must be deallocated after each test phase
296 return false;
297
298#ifdef DISTORTOS_THREAD_DETACH_ENABLE
299
300 {
301 SequenceAsserter sequenceAsserter;
302 auto testThread = makeAndStartDynamicThread({testThreadStackSize, UINT8_MAX},
303 [&sequenceAsserter]()
304 {
305 if (ThisThread::detach() != 0)
306 return;
307 sequenceAsserter.sequencePoint(0);
308 ThisThread::exit();
309 sequenceAsserter.sequencePoint(1);
310 });
311
312 waitForNextTick();
313
314 if (sequenceAsserter.assertSequence(1) == false)
315 return false;
316 }
317
318 if (mallinfo().uordblks != allocatedMemory) // dynamic memory must be deallocated after each test phase
319 return false;
320
321#endif // def DISTORTOS_THREAD_DETACH_ENABLE
322
323 return true;
324}
325
326/**
327 * \brief Phase 5 of test case

Callers

nothing calls this directly

Calls 7

exitFunction · 0.85
detachFunction · 0.85
waitForNextTickFunction · 0.85
sequencePointMethod · 0.80
assertSequenceMethod · 0.80
joinMethod · 0.45

Tested by

no test coverage detected