#include "ZUnitTest.hpp" #include #include #include static const char* testAdd(); static const char* testAddPtr(); static const char* testAnd(); static const char* testOr(); static const char* testXor(); static const char* testNot(); static const char* testAddRet(); static const char* testAddPtrRet(); static const char* testAndRet(); static const char* testOrRet(); static const char* testXorRet(); static const char* testNotRet(); static const char* testXadd(); static const char* testXaddPtr(); static const char* testXchg(); static const char* testXchgPtr(); static const char* testCAS(); static const char* testCASPtr(); static const char* testLdAq(); static const char* testLdAqPtr(); static const char* testStRel(); static const char* testStRelPtr(); //List of unit tests ZUnitTest SST_AtomicUnitTests[] = { { "SST_Atomic: AtomicAdd()", testAdd }, { "SST_Atomic: AtomicAddPtr()", testAddPtr }, { "SST_Atomic: AtomicAnd()", testAnd }, { "SST_Atomic: AtomicOr()", testOr }, { "SST_Atomic: AtomicXor()", testXor }, { "SST_Atomic: AtomicNot()", testNot }, { "SST_Atomic: AtomicAdd()", testAddRet }, { "SST_Atomic: AtomicAddPtr()", testAddPtrRet }, { "SST_Atomic: AtomicAnd()", testAndRet }, { "SST_Atomic: AtomicOr()", testOrRet }, { "SST_Atomic: AtomicXor()", testXorRet }, { "SST_Atomic: AtomicNot()", testNotRet }, { "SST_Atomic: AtomicXadd()", testXadd }, { "SST_Atomic: AtomicXaddPtr()", testXaddPtr }, { "SST_Atomic: AtomicXchg()", testXchg }, { "SST_Atomic: AtomicXchgPtr()", testXchgPtr }, { "SST_Atomic: AtomicCAS()", testCAS }, { "SST_Atomic: AtomicCASPtr()", testCASPtr }, { "SST_Atomic: AtomicLoadAcquire()", testLdAq }, { "SST_Atomic: AtomicLoadAcquirePtr()", testLdAqPtr }, { "SST_Atomic: AtomicStoreRelease()", testStRel }, { "SST_Atomic: AtomicStoreReleasePtr()", testStRelPtr }, }; DECLARE_ZTESTBLOCK(SST_Atomic); /*************************************************************************/ static const char* testAdd() { int v = 0x100; SST_Atomic_Add(&v, 0x50); TASSERT(v == 0x150, "Add() computed incorrect value"); return ZTEST_SUCCESS; } /*************************************************************************/ static const char* testAddPtr() { char data[64]; volatile void* ptr = (void*)&data; for(size_t i=0; i