// $Id$ // ============================================================================ // // = LIBRARY // tests // // = FILENAME // Atomic_Op_Test.cpp // // = DESCRIPTION // This is a simple test of the Atomic Operations Class in ACE. // On platforms like Win32, ACE uses template specialization to // use native implementations provided by the OS to accelarate // these operations. // // = AUTHOR // Irfan Pyarali // // ============================================================================ #include "tests/test_config.h" #include "ace/Atomic_Op.h" ACE_RCSID(tests, Atomic_Op_Test, "$Id$") #if defined (ACE_HAS_THREADS) int ACE_TMAIN (int, ACE_TCHAR *[]) { ACE_START_TEST (ACE_TEXT ("Atomic_Op_Test")); ACE_Atomic_Op foo (5); ACE_ASSERT (foo == 5); ++foo; ACE_ASSERT (foo == 6); --foo; ACE_ASSERT (foo == 5); foo += 10; ACE_ASSERT (foo == 15); foo -= 10; ACE_ASSERT (foo == 5); foo = 5L; ACE_ASSERT (foo == 5); ACE_END_TEST; return 0; } #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Atomic_Op; template class ACE_Atomic_Op_Ex; #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) #pragma instantiate ACE_Atomic_Op #pragma instantiate ACE_Atomic_Op_Ex #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ #else int ACE_TMAIN (int, ACE_TCHAR *[]) { ACE_START_TEST (ACE_TEXT ("Atomic_Op_Test")); ACE_ERROR ((LM_INFO, ACE_TEXT ("threads not supported on this platform\n"))); ACE_END_TEST; return 0; } #endif /* ACE_HAS_THREADS */