You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2007/10/06 14:46:08 UTC

svn commit: r582493 - /apr/apr/branches/1.2.x/test/testatomic.c

Author: trawick
Date: Sat Oct  6 05:46:08 2007
New Revision: 582493

URL: http://svn.apache.org/viewvc?rev=582493&view=rev
Log:
merge r505091 and r552360 from trunk

  r505091: add a test for apr_atomic_casptr, used in the
           httpd worker and event MPMs

           gregames

  r552360: Fix assertion message, function tests apr_atomic_inc32(-1).

           davi
    

Modified:
    apr/apr/branches/1.2.x/test/testatomic.c

Modified: apr/apr/branches/1.2.x/test/testatomic.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.2.x/test/testatomic.c?rev=582493&r1=582492&r2=582493&view=diff
==============================================================================
--- apr/apr/branches/1.2.x/test/testatomic.c (original)
+++ apr/apr/branches/1.2.x/test/testatomic.c Sat Oct  6 05:46:08 2007
@@ -111,6 +111,39 @@
     ABTS_INT_EQUAL(tc, 12, casval);
 }
 
+static void test_casptr_equal(abts_case *tc, void *data)
+{
+    int a;
+    volatile void *target_ptr = NULL;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &a, NULL);
+    ABTS_PTR_EQUAL(tc, NULL, old_ptr);
+    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
+}
+
+static void test_casptr_equal_nonnull(abts_case *tc, void *data)
+{
+    int a, b;
+    volatile void *target_ptr = &a;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &b, &a);
+    ABTS_PTR_EQUAL(tc, &a, old_ptr);
+    ABTS_PTR_EQUAL(tc, &b, (void *) target_ptr);
+}
+
+static void test_casptr_notequal(abts_case *tc, void *data)
+{
+    int a, b;
+    volatile void *target_ptr = &a;
+    void *old_ptr;
+
+    old_ptr = apr_atomic_casptr(&target_ptr, &a, &b);
+    ABTS_PTR_EQUAL(tc, &a, old_ptr);
+    ABTS_PTR_EQUAL(tc, &a, (void *) target_ptr);
+}
+
 static void test_add32(abts_case *tc, void *data)
 {
     apr_uint32_t oldval;
@@ -169,7 +202,7 @@
 
     rv = apr_atomic_inc32(&y32);
 
-    ABTS_ASSERT(tc, "apr_atomic_dec32 on zero returned zero.", rv == minus1);
+    ABTS_ASSERT(tc, "apr_atomic_inc32 on zero returned zero.", rv == minus1);
     str = apr_psprintf(p, "zero wrap failed: -1 + 1 = %d", y32);
     ABTS_ASSERT(tc, str, y32 == 0);
 }
@@ -290,6 +323,9 @@
     abts_run_test(suite, test_cas_equal, NULL);
     abts_run_test(suite, test_cas_equal_nonnull, NULL);
     abts_run_test(suite, test_cas_notequal, NULL);
+    abts_run_test(suite, test_casptr_equal, NULL);
+    abts_run_test(suite, test_casptr_equal_nonnull, NULL);
+    abts_run_test(suite, test_casptr_notequal, NULL);
     abts_run_test(suite, test_add32, NULL);
     abts_run_test(suite, test_inc32, NULL);
     abts_run_test(suite, test_set_add_inc_sub, NULL);