diff options
Diffstat (limited to 'test/atomic_test.cpp')
-rw-r--r-- | test/atomic_test.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/atomic_test.cpp b/test/atomic_test.cpp index 51d710d..e3a8d73 100644 --- a/test/atomic_test.cpp +++ b/test/atomic_test.cpp @@ -20,10 +20,51 @@ using namespace std; using namespace Raul; +#define TEST(cond) { if (!(cond)) return 1; } + int main() { /* TODO: Actually test functionality... */ + AtomicInt i(0); + TEST(i == 0); + + ++i; + TEST(i == 1); + + --i; + TEST(i == 0); + + TEST(i + 1 == 1); + TEST(i - 1 == -1); + + i += 2; + TEST(i == 2); + + i -= 4; + TEST(i == -2); + + TEST(i.compare_and_exchange(-2, 0)); + TEST(i == 0); + + TEST(i.exchange_and_add(5) == 0); + TEST(i == 5); + + i = 1; + TEST(i == 1); + TEST(i.decrement_and_test()); + + int five = 5; + int seven = 7; + AtomicPtr<int> p; + TEST(p.get() == NULL); + + p = &five; + TEST(p.get() == &five); + TEST(*p.get() == 5); + TEST(p.compare_and_exchange(&five, &seven)); + TEST(p.get() == &seven); + TEST(*p.get() = 7); return 0; } |