Author: tabish
Date: Fri Sep 18 20:21:59 2009
New Revision: 816772

URL: http://svn.apache.org/viewvc?rev=816772&view=rev
Log:
Add more tests, fix an error check condition in the Mutex

Modified:
    
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Mutex.cpp
    
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/MutexTest.cpp

Modified: 
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Mutex.cpp
URL: 
http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Mutex.cpp?rev=816772&r1=816771&r2=816772&view=diff
==============================================================================
--- 
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Mutex.cpp
 (original)
+++ 
activemq/activemq-cpp/trunk/activemq-cpp/src/main/decaf/util/concurrent/Mutex.cpp
 Fri Sep 18 20:21:59 2009
@@ -29,6 +29,7 @@
 using namespace decaf::internal::util::concurrent;
 using namespace decaf::util;
 using namespace decaf::util::concurrent;
+using namespace decaf::lang::exceptions;
 
 
////////////////////////////////////////////////////////////////////////////////
 namespace decaf{
@@ -106,6 +107,16 @@
            decaf::lang::exceptions::IllegalMonitorStateException,
            decaf::lang::exceptions::InterruptedException ) {
 
+    if( millisecs < 0 ) {
+        throw IllegalArgumentException(
+            __FILE__, __LINE__, "Milliseconds value cannot be negative." );
+    }
+
+    if( nanos < 0 || nanos > 999999 ) {
+        throw IllegalArgumentException(
+            __FILE__, __LINE__, "Nanoseconds value must be in the range 
[0..999999]." );
+    }
+
     ConditionImpl::wait( this->properties->condition.get(), millisecs, nanos );
 }
 

Modified: 
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/MutexTest.cpp
URL: 
http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/MutexTest.cpp?rev=816772&r1=816771&r2=816772&view=diff
==============================================================================
--- 
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/MutexTest.cpp
 (original)
+++ 
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/util/concurrent/MutexTest.cpp
 Fri Sep 18 20:21:59 2009
@@ -30,6 +30,7 @@
 using namespace std;
 using namespace decaf;
 using namespace decaf::lang;
+using namespace decaf::lang::exceptions;
 using namespace decaf::util;
 using namespace decaf::util::concurrent;
 using namespace decaf::internal::util::concurrent;
@@ -179,6 +180,27 @@
 
         CPPUNIT_ASSERT( delta >= 1 && delta <= 2 );
 
+        {
+            Mutex test;
+            test.lock();
+
+            CPPUNIT_ASSERT_THROW_MESSAGE(
+                "Should Throw an IllegalArgumentException",
+                test.wait( -1, -1 ),
+                IllegalArgumentException );
+
+            CPPUNIT_ASSERT_THROW_MESSAGE(
+                "Should Throw an IllegalArgumentException",
+                test.wait( 1, 9999999 ),
+                IllegalArgumentException );
+
+            CPPUNIT_ASSERT_THROW_MESSAGE(
+                "Should Throw an IllegalArgumentException",
+                test.wait( 0, -1 ),
+                IllegalArgumentException );
+
+        }
+
     } catch(lang::Exception& ex) {
         std::cout << ex.getMessage() << std::endl;
         CPPUNIT_ASSERT( false );


Reply via email to