From 94a5aca84f9080d0ad003843d198b2baa529fa16 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Tue, 2 Oct 2012 12:25:11 +0400 Subject: 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. --- tests/test_atomic_include.template | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'tests') 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 -- cgit v1.2.1