]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/thread/atomic.cpp
removed wxDCWindowImpl::m_win; use wxDCImpl::m_window instead (fixes caret-related...
[wxWidgets.git] / tests / thread / atomic.cpp
index d49019c6abd56717a142cac3c4345e0b0cd61a18..55bf3bdf2d8f879c4640de42ae679f0ae9bf98c8 100644 (file)
@@ -23,6 +23,8 @@
 #include "wx/atomic.h"
 #include "wx/thread.h"
 #include "wx/dynarray.h"
+#include "wx/log.h"
+
 WX_DEFINE_ARRAY_PTR(wxThread *, wxArrayThread);
 
 // ----------------------------------------------------------------------------
@@ -34,8 +36,6 @@ class AtomicTestCase : public CppUnit::TestCase
 public:
     AtomicTestCase() { }
 
-private:
-
     enum ETestType
     {
         IncAndDecMixed,
@@ -43,6 +43,7 @@ private:
         DecOnly
     };
 
+private:
     class MyThread : public wxThread
     {
     public:
@@ -59,6 +60,7 @@ private:
 
     CPPUNIT_TEST_SUITE( AtomicTestCase );
         CPPUNIT_TEST( TestNoThread );
+        CPPUNIT_TEST( TestDecReturn );
         CPPUNIT_TEST( TestTwoThreadsMix );
         CPPUNIT_TEST( TestTenThreadsMix );
         CPPUNIT_TEST( TestTwoThreadsSeparate );
@@ -66,6 +68,7 @@ private:
     CPPUNIT_TEST_SUITE_END();
 
     void TestNoThread();
+    void TestDecReturn();
     void TestTenThreadsMix() { TestWithThreads(10, IncAndDecMixed); }
     void TestTwoThreadsMix() { TestWithThreads(2, IncAndDecMixed); }
     void TestTenThreadsSeparate() { TestWithThreads(10, IncOnly); }
@@ -95,6 +98,17 @@ void AtomicTestCase::TestNoThread()
     CPPUNIT_ASSERT( int2 == -10000000 );
 }
 
+void AtomicTestCase::TestDecReturn()
+{
+    wxAtomicInt i(0);
+    wxAtomicInc(i);
+    wxAtomicInc(i);
+    CPPUNIT_ASSERT( i == 2 );
+
+    CPPUNIT_ASSERT( wxAtomicDec(i) > 0 );
+    CPPUNIT_ASSERT( wxAtomicDec(i) == 0 );
+}
+
 void AtomicTestCase::TestWithThreads(int count, ETestType testType)
 {
     wxAtomicInt    int1=0;