summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-10-02 12:25:11 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-10-02 12:25:11 +0400
commit94a5aca84f9080d0ad003843d198b2baa529fa16 (patch)
treee36da61239053d9ee2341c032adb19b06304f64f /tests
parent7de00cfaffdfed8bedbfdf01bbdfbaecdb40d5f6 (diff)
downloadlibatomic_ops-94a5aca84f9080d0ad003843d198b2baa529fa16.tar.gz
Add negative double-CAS test cases to test_atomic_include
* tests/test_atomic_include.template (test_atomicXX): Add more negative tests for compare_double_and_swap_double and compare_and_swap_double; restore zero 'w' value using double-CAS.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_atomic_include.template15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/test_atomic_include.template b/tests/test_atomic_include.template
index c8b5ba0..10fb949 100644
--- a/tests/test_atomic_include.template
+++ b/tests/test_atomic_include.template
@@ -206,9 +206,16 @@ void test_atomicXX(void)
TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0);
TA_assert(AO_compare_double_and_swap_doubleXX(&w, 0, 0, 12, 13));
TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
+ TA_assert(!AO_compare_double_and_swap_doubleXX(&w, 12, 14, 64, 33));
+ TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
+ TA_assert(!AO_compare_double_and_swap_doubleXX(&w, 11, 13, 85, 82));
+ TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
+ TA_assert(!AO_compare_double_and_swap_doubleXX(&w, 13, 12, 17, 42));
+ TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
TA_assert(AO_compare_double_and_swap_doubleXX(&w, 12, 13, 17, 42));
TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42);
- w.AO_val1 = 0; w.AO_val2 = 0;
+ TA_assert(AO_compare_double_and_swap_doubleXX(&w, 17, 42, 0, 0));
+ TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0);
# else
MISSING(AO_compare_double_and_swap_double);
# endif
@@ -217,8 +224,14 @@ void test_atomicXX(void)
TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0);
TA_assert(AO_compare_and_swap_doubleXX(&w, 0, 12, 13));
TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
+ TA_assert(!AO_compare_and_swap_doubleXX(&w, 13, 12, 33));
+ TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
+ TA_assert(!AO_compare_and_swap_doubleXX(&w, 1213, 48, 86));
+ TA_assert(w.AO_val1 == 12 && w.AO_val2 == 13);
TA_assert(AO_compare_and_swap_doubleXX(&w, 12, 17, 42));
TA_assert(w.AO_val1 == 17 && w.AO_val2 == 42);
+ TA_assert(AO_compare_and_swap_doubleXX(&w, 17, 0, 0));
+ TA_assert(w.AO_val1 == 0 && w.AO_val2 == 0);
# else
MISSING(AO_compare_and_swap_double);
# endif