diff options
author | David Robillard <d@drobilla.net> | 2012-08-13 18:21:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-08-13 18:21:53 +0000 |
commit | 331cdd5eb4cacd5396e7e56dd826b320212674fd (patch) | |
tree | fc4badc5fbdbbee9302e1ee158330b10fb3c83c6 /test | |
parent | ca660c8b407affd24802c43429b6341e76010660 (diff) | |
download | raul-331cdd5eb4cacd5396e7e56dd826b320212674fd.tar.gz raul-331cdd5eb4cacd5396e7e56dd826b320212674fd.tar.bz2 raul-331cdd5eb4cacd5396e7e56dd826b320212674fd.zip |
Drop glib for atomics and use gcc/clang builtins.
git-svn-id: http://svn.drobilla.net/lad/trunk/raul@4681 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'test')
-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; } |