You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2009/11/20 00:37:27 UTC

svn commit: r882361 [3/4] - in /activemq/activemq-cpp/trunk/activemq-cpp/src: main/activemq/commands/ main/activemq/wireformat/openwire/utils/ main/cms/ test/activemq/commands/ test/activemq/wireformat/openwire/utils/

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/MapMessage.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/MapMessage.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/MapMessage.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/MapMessage.h Thu Nov 19 23:37:26 2009
@@ -21,6 +21,10 @@
 #include <cms/Config.h>
 #include <cms/Message.h>
 
+#include <cms/CMSException.h>
+#include <cms/MessageFormatException.h>
+#include <cms/MessageNotWriteableException.h>
+
 namespace cms{
 
     /**
@@ -101,7 +105,7 @@
          * @throws MessageFormatExceptio - if this type conversion is invalid.
          */
         virtual bool getBoolean( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a boolean value with the specified name into the Map.
@@ -115,7 +119,7 @@
          * @throws MessageNotWritableException - if the Message is in Read-only Mode.
          */
         virtual void setBoolean( const std::string& name, bool value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Byte value of the Specified name
@@ -124,10 +128,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual unsigned char getByte( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Byte value with the specified name into the Map.
@@ -138,10 +142,10 @@
          *      the Byte value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setByte( const std::string& name, unsigned char value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Bytes value of the Specified name
@@ -150,10 +154,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual std::vector<unsigned char> getBytes( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Bytes value with the specified name into the Map.
@@ -164,11 +168,11 @@
          *      The Bytes value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setBytes( const std::string& name,
                                const std::vector<unsigned char>& value )
-                                    throw( CMSException ) = 0;
+                                    throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Char value of the Specified name
@@ -177,10 +181,10 @@
          *      name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual char getChar( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Char value with the specified name into the Map.
@@ -191,10 +195,10 @@
          *      the Char value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setChar( const std::string& name, char value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Double value of the Specified name
@@ -203,10 +207,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual double getDouble( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Double value with the specified name into the Map.
@@ -217,10 +221,10 @@
          *      The Double value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
-        virtual void setDouble( const std::string& name,
-                                double value ) throw( CMSException ) = 0;
+        virtual void setDouble( const std::string& name, double value )
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Float value of the Specified name
@@ -229,10 +233,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual float getFloat( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Float value with the specified name into the Map.
@@ -243,10 +247,10 @@
          *      The Float value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setFloat( const std::string& name, float value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Int value of the Specified name
@@ -255,10 +259,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual int getInt( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Int value with the specified name into the Map.
@@ -269,10 +273,10 @@
          *      The Int value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setInt( const std::string& name, int value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Long value of the Specified name
@@ -281,10 +285,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual long long getLong( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Long value with the specified name into the Map.
@@ -295,10 +299,10 @@
          *      The Long value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setLong( const std::string& name, long long value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the Short value of the Specified name
@@ -307,10 +311,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual short getShort( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a Short value with the specified name into the Map.
@@ -321,10 +325,10 @@
          *      The Short value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setShort( const std::string& name, short value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
         /**
          * Returns the String value of the Specified name
@@ -333,10 +337,10 @@
          *      Name of the value to fetch from the map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageFormatExceptio - if this type conversion is invalid.
+         * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual std::string getString( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( cms::MessageFormatException, cms::CMSException ) = 0;
 
         /**
          * Sets a String value with the specified name into the Map.
@@ -347,10 +351,10 @@
          *      The String value to set in the Map
          *
          * @throws CMSException - if the operation fails due to an internal error.
-         * @throws MessageNotWritableException - if the Message is in Read-only Mode.
+         * @throws MessageNotWriteableException - if the Message is in Read-only Mode.
          */
         virtual void setString( const std::string& name, const std::string& value )
-            throw( CMSException ) = 0;
+            throw( cms::MessageNotWriteableException, cms::CMSException ) = 0;
 
     };
 

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/Message.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/Message.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/Message.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/Message.h Thu Nov 19 23:37:26 2009
@@ -20,9 +20,13 @@
 
 #include <cms/Config.h>
 #include <cms/Destination.h>
-#include <cms/CMSException.h>
 #include <cms/DeliveryMode.h>
 
+#include <cms/CMSException.h>
+#include <cms/IllegalStateException.h>
+#include <cms/MessageFormatException.h>
+#include <cms/MessageNotWriteableException.h>
+
 namespace cms{
 
     /**
@@ -119,7 +123,7 @@
          * @throws CMSException - if an internal error occurs.
          * @throws IllegalStateException - if this method is called on a closed session.
          */
-        virtual void acknowledge() const throw( CMSException ) = 0;
+        virtual void acknowledge() const throw( IllegalStateException, CMSException ) = 0;
 
         /**
          * Clears out the body of the message.  This does not clear the
@@ -173,7 +177,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual bool getBooleanProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a byte property.
@@ -186,7 +190,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual unsigned char getByteProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a double property.
@@ -199,7 +203,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual double getDoubleProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a float property.
@@ -212,7 +216,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual float getFloatProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a int property.
@@ -225,7 +229,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual int getIntProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a long property.
@@ -238,7 +242,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual long long getLongProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a short property.
@@ -251,7 +255,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual short getShortProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Gets a string property.
@@ -264,7 +268,7 @@
          * @throws MessageFormatException - if this type conversion is invalid.
          */
         virtual std::string getStringProperty( const std::string& name ) const
-            throw( CMSException ) = 0;
+            throw( MessageFormatException, CMSException ) = 0;
 
         /**
          * Sets a boolean property.
@@ -278,7 +282,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setBooleanProperty( const std::string& name, bool value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a byte property.
@@ -292,7 +296,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setByteProperty( const std::string& name, unsigned char value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a double property.
@@ -306,7 +310,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setDoubleProperty( const std::string& name, double value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a float property.
@@ -319,7 +323,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setFloatProperty( const std::string& name, float value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a int property.
@@ -333,7 +337,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setIntProperty( const std::string& name, int value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a long property.
@@ -347,7 +351,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setLongProperty( const std::string& name, long long value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a short property.
@@ -361,7 +365,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setShortProperty( const std::string& name, short value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Sets a string property.
@@ -375,7 +379,7 @@
          * @throws MessageNotWriteableException - if properties are read-only
          */
         virtual void setStringProperty( const std::string& name, const std::string& value )
-            throw( CMSException ) = 0;
+            throw( MessageNotWriteableException, CMSException ) = 0;
 
         /**
          * Gets the correlation ID for the message.

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/TextMessage.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/TextMessage.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/TextMessage.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/main/cms/TextMessage.h Thu Nov 19 23:37:26 2009
@@ -21,6 +21,7 @@
 #include <cms/Config.h>
 #include <cms/Message.h>
 #include <cms/CMSException.h>
+#include <cms/MessageNotWriteableException.h>
 
 namespace cms{
 
@@ -49,7 +50,7 @@
          *
          * @throws CMSException - if an internal error occurs.
          */
-        virtual std::string getText() const throw( CMSException ) = 0;
+        virtual std::string getText() const throw( cms::CMSException ) = 0;
 
         /**
          * Sets the message contents, does not take ownership of the passed
@@ -61,7 +62,8 @@
          * @throws CMSException - if an internal error occurs.
          * @throws MessageNotWriteableException - if the message is in read-only mode..
          */
-        virtual void setText( const char* msg ) throw( CMSException ) = 0;
+        virtual void setText( const char* msg ) throw( cms::MessageNotWriteableException,
+                                                       cms::CMSException ) = 0;
 
         /**
          * Sets the message contents
@@ -72,7 +74,8 @@
          * @throws CMSException - if an internal error occurs.
          * @throws MessageNotWriteableException - if the message is in read-only mode..
          */
-        virtual void setText( const std::string& msg ) throw( CMSException ) = 0;
+        virtual void setText( const std::string& msg ) throw( cms::MessageNotWriteableException,
+                                                              cms::CMSException ) = 0;
 
     };
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.cpp Thu Nov 19 23:37:26 2009
@@ -18,57 +18,438 @@
 #include "ActiveMQBytesMessageTest.h"
 
 #include <decaf/util/UUID.h>
+#include <decaf/lang/Exception.h>
 #include <activemq/commands/ActiveMQBytesMessage.h>
 
 using namespace std;
+using namespace cms;
 using namespace activemq;
 using namespace activemq::util;
 using namespace activemq::commands;
+using namespace decaf;
+using namespace decaf::lang;
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQBytesMessageTest::test()
-{
-    ActiveMQBytesMessage myMessage;
-
-    CPPUNIT_ASSERT( myMessage.getDataStructureType() == ActiveMQBytesMessage::ID_ACTIVEMQBYTESMESSAGE );
-
-    // Write some data
-    myMessage.writeBoolean( false );
-    myMessage.writeByte( 127 );
-    myMessage.writeShort( 32767 );
-    myMessage.writeUnsignedShort( 65535 );
-    myMessage.writeDouble( 0.5622154 );
-    myMessage.writeUTF( "This is a UTF String" );
-
-    try{
-        myMessage.readInt();
-        CPPUNIT_ASSERT( false );
-    } catch(...) {}
-
-    myMessage.writeDouble( 1.012 );
-    myMessage.writeFloat( 10.000005f );
-    myMessage.writeInt( 15645646 );
-    myMessage.writeLong( 0xFFFAAA999LL );
-    myMessage.writeString( "This is a test String" );
-
-    CPPUNIT_ASSERT( myMessage.getBodyLength() != 0 );
-
-    // Get ready to read
-    myMessage.reset();
-
-    CPPUNIT_ASSERT( myMessage.readBoolean() == false );
-    CPPUNIT_ASSERT( myMessage.readByte() == 127 );
-    CPPUNIT_ASSERT( myMessage.readShort() == 32767 );
-    CPPUNIT_ASSERT( myMessage.readUnsignedShort() == 65535 );
-    CPPUNIT_ASSERT( myMessage.readDouble() == 0.5622154 );
-    CPPUNIT_ASSERT( myMessage.readUTF() == "This is a UTF String" );
-    CPPUNIT_ASSERT( myMessage.readDouble() == 1.012 );
-    CPPUNIT_ASSERT( myMessage.readFloat() == 10.000005f );
-    CPPUNIT_ASSERT( myMessage.readInt() == 15645646 );
-    CPPUNIT_ASSERT( myMessage.readLong() == 0xFFFAAA999ULL );
-    CPPUNIT_ASSERT( myMessage.readString() == "This is a test String" );
+void ActiveMQBytesMessageTest::testGetBodyLength() {
+    ActiveMQBytesMessage msg;
+    std::size_t len = 10;
 
-    myMessage.clearBody();
+    try {
 
-    CPPUNIT_ASSERT( myMessage.getBodyLength() == 0 );
+        for( std::size_t i = 0; i < len; i++ ) {
+            msg.writeLong( 5LL );
+        }
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+    }
+
+    try {
+
+        msg.reset();
+        CPPUNIT_ASSERT( msg.getBodyLength() == ( len * 8 ) );
+
+    } catch( Exception& e ) {
+        e.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadBoolean() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeBoolean( true );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readBoolean() );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadByte() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeByte( (unsigned char)2 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readByte() == 2 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadShort() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeShort( (short)3000 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readShort() == 3000 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadUnsignedShort() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeShort( (short)3000 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readUnsignedShort() == 3000 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadChar() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeChar( 'a' );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readChar() == 'a' );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadInt() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeInt( 3000 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readInt() == 3000 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadLong() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeLong( 3000 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readLong() == 3000 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadFloat() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeFloat( 3.3f );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readFloat() == 3.3f );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadDouble() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        msg.writeDouble( 3.3 );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readDouble() == 3.3 );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadUTF() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        std::string str = "this is a test";
+        msg.writeUTF( str );
+        msg.reset();
+        CPPUNIT_ASSERT( msg.readUTF() == str );
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadBytesbyteArray() {
+
+    ActiveMQBytesMessage msg;
+    try {
+        unsigned char data[50];
+        for( int i = 0; i < 50; i++ ) {
+            data[i] = (unsigned char)i;
+        }
+        msg.writeBytes( &data[0], 0, 50 );
+        msg.reset();
+        unsigned char test[50];
+        msg.readBytes( test, 50 );
+        for( int i = 0; i < 50; i++ ) {
+            CPPUNIT_ASSERT( test[i] == i );
+        }
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testClearBody() {
+    ActiveMQBytesMessage bytesMessage;
+    try {
+        bytesMessage.writeInt( 1 );
+        bytesMessage.clearBody();
+        CPPUNIT_ASSERT( !bytesMessage.isReadOnlyBody() );
+        bytesMessage.writeInt( 1 );
+        bytesMessage.readInt();
+    } catch( MessageNotReadableException& mnwe ) {
+    } catch( MessageNotWriteableException& mnwe ) {
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReset() {
+    ActiveMQBytesMessage message;
+    try {
+        message.writeDouble( 24.5 );
+        message.writeLong( 311 );
+    } catch( MessageNotWriteableException& mnwe ) {
+        CPPUNIT_FAIL( "should be writeable" );
+    }
+    message.reset();
+    try {
+        CPPUNIT_ASSERT( message.isReadOnlyBody() );
+        CPPUNIT_ASSERT_DOUBLES_EQUAL( message.readDouble(), 24.5, 0 );
+        CPPUNIT_ASSERT_EQUAL( message.readLong(), 311LL );
+    } catch( MessageNotReadableException& mnre ) {
+        CPPUNIT_FAIL( "should be readable" );
+    }
+    try {
+        message.writeInt( 33 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testReadOnlyBody() {
+
+    ActiveMQBytesMessage message;
+    std::vector<unsigned char> buffer(3);
+    unsigned char array[2];
+
+    try {
+        message.writeBoolean( true );
+        message.writeByte( (unsigned char)1 );
+        message.writeByte( (unsigned char)1 );
+        message.writeBytes( buffer );
+        message.writeBytes( &array[0], 0, 2 );
+        message.writeChar( 'a' );
+        message.writeDouble( 1.5 );
+        message.writeFloat( (float)1.5 );
+        message.writeInt( 1 );
+        message.writeLong( 1 );
+        message.writeString( "stringobj" );
+        message.writeShort( (short)1 );
+        message.writeShort( (short)1 );
+        message.writeUTF( "utfstring" );
+    } catch( MessageNotWriteableException& mnwe ) {
+        CPPUNIT_FAIL( "Should be writeable" );
+    }
+    message.reset();
+    try {
+        message.readBoolean();
+        message.readByte();
+        message.readByte();
+        message.readBytes( buffer );
+        message.readBytes( &array[0], 2 );
+        message.readChar();
+        message.readDouble();
+        message.readFloat();
+        message.readInt();
+        message.readLong();
+        message.readString();
+        message.readShort();
+        message.readUnsignedShort();
+        message.readUTF();
+    } catch( MessageNotReadableException& mnwe ) {
+        CPPUNIT_FAIL( "Should be readable" );
+    }
+    try {
+        message.writeBoolean( true );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeByte( (unsigned char)1 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeBytes( buffer );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeBytes( &array[0], 0, 2 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeChar( 'a' );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeDouble( 1.5 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeFloat( (float)1.5 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeInt( 1 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeLong( 1 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeString( "stringobj" );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeShort( (short)1 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        message.writeUTF( "utfstring" );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQBytesMessageTest::testWriteOnlyBody() {
+    ActiveMQBytesMessage message;
+    message.clearBody();
+    std::vector<unsigned char> buffer(3);
+    unsigned char array[2];
+    try {
+        message.writeBoolean( true );
+        message.writeByte( (unsigned char)1 );
+        message.writeByte( (unsigned char)1 );
+        message.writeBytes( buffer );
+        message.writeBytes( &array[0], 0, 2 );
+        message.writeChar( 'a' );
+        message.writeDouble( 1.5 );
+        message.writeFloat( (float)1.5 );
+        message.writeInt( 1 );
+        message.writeLong( 1LL );
+        message.writeString( "stringobj" );
+        message.writeShort( (short)1 );
+        message.writeShort( (short)1 );
+        message.writeUTF( "utfstring" );
+    } catch( MessageNotWriteableException& mnwe ) {
+        CPPUNIT_FAIL( "Should be writeable" );
+    }
+    try {
+        message.readBoolean();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& mnwe ) {
+    }
+    try {
+        message.readByte();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readBytes( buffer );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readBytes( &array[0], 2 );
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readChar();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readDouble();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readFloat();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readInt();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readLong();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readString();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readShort();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readUnsignedShort();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
+    try {
+        message.readUTF();
+        CPPUNIT_FAIL( "Should have thrown exception" );
+    } catch( MessageNotReadableException& e ) {
+    }
 }

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQBytesMessageTest.h Thu Nov 19 23:37:26 2009
@@ -27,7 +27,22 @@
     class ActiveMQBytesMessageTest : public CppUnit::TestFixture {
 
         CPPUNIT_TEST_SUITE( ActiveMQBytesMessageTest );
-        CPPUNIT_TEST( test );
+        CPPUNIT_TEST( testGetBodyLength );
+        CPPUNIT_TEST( testReadBoolean );
+        CPPUNIT_TEST( testReadByte );
+        CPPUNIT_TEST( testReadShort );
+        CPPUNIT_TEST( testReadUnsignedShort );
+        CPPUNIT_TEST( testReadChar );
+        CPPUNIT_TEST( testReadInt );
+        CPPUNIT_TEST( testReadLong );
+        CPPUNIT_TEST( testReadFloat );
+        CPPUNIT_TEST( testReadDouble );
+        CPPUNIT_TEST( testReadUTF );
+        CPPUNIT_TEST( testReadBytesbyteArray );
+        CPPUNIT_TEST( testClearBody );
+        CPPUNIT_TEST( testReset );
+        CPPUNIT_TEST( testReadOnlyBody );
+        CPPUNIT_TEST( testWriteOnlyBody );
         CPPUNIT_TEST_SUITE_END();
 
     public:
@@ -35,7 +50,24 @@
         ActiveMQBytesMessageTest() {}
         virtual ~ActiveMQBytesMessageTest() {}
 
-        void test();
+        void testGetBodyLength();
+        void testReadBoolean();
+        void testReadByte();
+        void testReadUnsignedByte();
+        void testReadShort();
+        void testReadUnsignedShort();
+        void testReadChar();
+        void testReadInt();
+        void testReadLong();
+        void testReadFloat();
+        void testReadDouble();
+        void testReadUTF();
+        void testReadBytesbyteArray();
+        void testClearBody();
+        void testReset();
+        void testReadOnlyBody();
+        void testWriteOnlyBody();
+
     };
 
 }}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.cpp?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.cpp Thu Nov 19 23:37:26 2009
@@ -19,14 +19,16 @@
 
 #include <activemq/commands/ActiveMQMapMessage.h>
 
+#include <algorithm>
+
+using namespace cms;
 using namespace std;
 using namespace activemq;
 using namespace activemq::util;
 using namespace activemq::commands;
 
 ////////////////////////////////////////////////////////////////////////////////
-void ActiveMQMapMessageTest::test()
-{
+void ActiveMQMapMessageTest::test() {
     ActiveMQMapMessage myMessage;
 
     CPPUNIT_ASSERT( myMessage.getDataStructureType() == ActiveMQMapMessage::ID_ACTIVEMQMAPMESSAGE );
@@ -62,3 +64,410 @@
     CPPUNIT_ASSERT( myMessage.getDouble( "double" ) == 64.54654 );
     CPPUNIT_ASSERT( myMessage.getBytes( "bytes" ) == data );
 }
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testBytesConversion() {
+
+    ActiveMQMapMessage msg;
+
+    std::vector<unsigned char> buffer( 1 );
+
+    msg.setBoolean( "boolean", true );
+    msg.setByte( "byte", (unsigned char)1 );
+    msg.setBytes( "bytes", buffer );
+    msg.setChar( "char", 'a' );
+    msg.setDouble( "double", 1.5 );
+    msg.setFloat( "float", 1.5f );
+    msg.setInt( "int", 1 );
+    msg.setLong( "long", 1 );
+    msg.setShort( "short", (short)1 );
+    msg.setString( "string", "string" );
+
+    // Test with a 1Meg String
+    std::string bigString;
+
+    bigString.reserve( 1024 * 1024 );
+    for( int i = 0; i < 1024 * 1024; i++ ) {
+        bigString += ( (char)'a' + i % 26 );
+    }
+
+    msg.setString( "bigString", bigString );
+
+    ActiveMQMapMessage msg2;
+    msg2.copyDataStructure( &msg );
+
+    CPPUNIT_ASSERT_EQUAL( msg2.getBoolean("boolean"), true);
+    CPPUNIT_ASSERT_EQUAL( msg2.getByte( "byte" ), (unsigned char)1 );
+    CPPUNIT_ASSERT_EQUAL( msg2.getBytes( "bytes" ).size(), (std::size_t)1 );
+    CPPUNIT_ASSERT_EQUAL( msg2.getChar( "char" ), 'a' );
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg2.getDouble( "double" ), 1.5, 0.01 );
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg2.getFloat( "float" ), 1.5f, 0.01 );
+    CPPUNIT_ASSERT_EQUAL( msg2.getInt( "int" ), 1 );
+    CPPUNIT_ASSERT_EQUAL( msg2.getLong( "long" ), 1LL );
+    CPPUNIT_ASSERT_EQUAL( msg2.getShort( "short" ), (short)1 );
+    CPPUNIT_ASSERT_EQUAL( msg2.getString( "string" ), std::string( "string" ) );
+    CPPUNIT_ASSERT_EQUAL( msg2.getString( "bigString" ), bigString );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetBoolean() {
+
+    ActiveMQMapMessage msg;
+    msg.setBoolean( name, true );
+    msg.setReadOnlyBody( true );
+    CPPUNIT_ASSERT( msg.getBoolean( name ) );
+    msg.clearBody();
+    msg.setString( name, "true" );
+
+    ActiveMQMapMessage msg2;
+    msg2.copyDataStructure( &msg );
+
+    CPPUNIT_ASSERT( msg2.getBoolean( name ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetByte() {
+    ActiveMQMapMessage msg;
+    msg.setByte( name, (unsigned char)1 );
+
+    ActiveMQMapMessage msg2;
+    msg2.copyDataStructure( &msg );
+
+    CPPUNIT_ASSERT( msg2.getByte( name ) == (unsigned char)1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetShort() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setShort( name, (short)1 );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getShort( name ) == (short)1 );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetChar() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setChar( name, 'a' );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getChar( name ) == 'a' );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetInt() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setInt( name, 1 );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getInt( name ) == 1 );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetLong() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setLong( name, 1 );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getLong( name ) == 1 );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetFloat() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setFloat( name, 1.5f );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getFloat( name ) == 1.5f );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetDouble() {
+    ActiveMQMapMessage msg;
+    try {
+        msg.setDouble( name, 1.5 );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getDouble( name ) == 1.5 );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetString() {
+    ActiveMQMapMessage msg;
+    try {
+        std::string str = "test";
+        msg.setString( name, str );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getString( name ) == str );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetBytes() {
+    ActiveMQMapMessage msg;
+    try {
+
+        std::vector<unsigned char> bytes1( 3, 'a' );
+        std::vector<unsigned char> bytes2( 2, 'b' );
+
+        msg.setBytes( name, bytes1 );
+        msg.setBytes( name + "2", bytes2 );
+
+        ActiveMQMapMessage msg2;
+        msg2.copyDataStructure( &msg );
+
+        CPPUNIT_ASSERT( msg2.getBytes( name ) == bytes1 );
+        CPPUNIT_ASSERT_EQUAL( msg2.getBytes( name + "2" ).size(), bytes2.size() );
+
+    } catch( CMSException& ex ) {
+        ex.printStackTrace();
+        CPPUNIT_ASSERT( false );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testGetMapNames() {
+
+    ActiveMQMapMessage msg;
+
+    std::vector<unsigned char> bytes1( 3, 'a' );
+    std::vector<unsigned char> bytes2( 2, 'b' );
+
+    msg.setBoolean( "boolean", true );
+    msg.setByte( "byte", (unsigned char)1 );
+    msg.setBytes( "bytes1", bytes1 );
+    msg.setBytes( "bytes2", bytes2 );
+    msg.setChar( "char", 'a' );
+    msg.setDouble( "double", 1.5 );
+    msg.setFloat( "float", 1.5f );
+    msg.setInt( "int", 1 );
+    msg.setLong( "long", 1 );
+    msg.setShort( "short", (short)1 );
+    msg.setString( "string", "string" );
+
+    ActiveMQMapMessage msg2;
+    msg2.copyDataStructure( &msg );
+
+    std::vector<std::string> mapNamesList = msg2.getMapNames();
+
+    CPPUNIT_ASSERT_EQUAL( mapNamesList.size(), (std::size_t)11 );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "boolean" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "byte" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "bytes1" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "bytes2" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "char" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "double" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "float" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "int" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "long" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "short" ) != mapNamesList.end() );
+    CPPUNIT_ASSERT( std::find( mapNamesList.begin(), mapNamesList.end(), "string" ) != mapNamesList.end() );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testItemExists() {
+    ActiveMQMapMessage mapMessage;
+
+    mapMessage.setString( "exists", "test" );
+
+    ActiveMQMapMessage mapMessage2;
+    mapMessage2.copyDataStructure( &mapMessage );
+
+    CPPUNIT_ASSERT( mapMessage2.itemExists( "exists" ) );
+    CPPUNIT_ASSERT( !mapMessage2.itemExists( "doesntExist" ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testClearBody() {
+
+    ActiveMQMapMessage mapMessage;
+    mapMessage.setString( "String", "String" );
+    mapMessage.clearBody();
+    CPPUNIT_ASSERT( !mapMessage.isReadOnlyBody() );
+
+    mapMessage.onSend();
+    mapMessage.setContent( mapMessage.getContent() );
+    CPPUNIT_ASSERT( mapMessage.itemExists( "String" ) == false );
+    mapMessage.clearBody();
+    mapMessage.setString( "String", "String" );
+
+    ActiveMQMapMessage mapMessage2;
+    mapMessage2.copyDataStructure( &mapMessage );
+
+    CPPUNIT_ASSERT( mapMessage2.itemExists( "String" ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testReadOnlyBody() {
+
+    ActiveMQMapMessage msg;
+    std::vector<unsigned char> buffer(2);
+
+    msg.setBoolean( "boolean", true );
+    msg.setByte( "byte", (unsigned char)1 );
+    msg.setBytes( "bytes", buffer );
+    msg.setChar( "char", 'a' );
+    msg.setDouble( "double", 1.5 );
+    msg.setFloat( "float", 1.5f );
+    msg.setInt( "int", 1 );
+    msg.setLong( "long", 1 );
+    msg.setShort( "short", (short)1 );
+    msg.setString( "string", "string" );
+
+    msg.setReadOnlyBody( true );
+
+    try {
+        msg.getBoolean( "boolean" );
+        msg.getByte( "byte" );
+        msg.getBytes( "bytes" );
+        msg.getChar( "char" );
+        msg.getDouble( "double" );
+        msg.getFloat( "float" );
+        msg.getInt( "int" );
+        msg.getLong( "long" );
+        msg.getShort( "short" );
+        msg.getString( "string" );
+    } catch( MessageNotReadableException mnre ) {
+        CPPUNIT_FAIL( "should be readable" );
+    }
+    try {
+        msg.setBoolean( "boolean", true );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setByte( "byte", (unsigned char)1 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setBytes( "bytes", buffer );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setChar( "char", 'a' );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setDouble( "double", 1.5 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setFloat( "float", 1.5f );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setInt( "int", 1 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setLong( "long", 1 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setShort( "short", (short)1 );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+    try {
+        msg.setString( "string", "string" );
+        CPPUNIT_FAIL( "should throw exception" );
+    } catch( MessageNotWriteableException& mnwe ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMapMessageTest::testWriteOnlyBody() {
+
+    ActiveMQMapMessage msg;
+
+    std::vector<unsigned char> buffer1(1);
+    std::vector<unsigned char> buffer2(2);
+
+    msg.setReadOnlyBody( false );
+
+    msg.setBoolean( "boolean", true );
+    msg.setByte( "byte", (unsigned char)1 );
+    msg.setBytes( "bytes", buffer1 );
+    msg.setBytes( "bytes2", buffer2 );
+    msg.setChar( "char", 'a' );
+    msg.setDouble( "double", 1.5 );
+    msg.setFloat( "float", 1.5f );
+    msg.setInt( "int", 1 );
+    msg.setLong( "long", 1 );
+    msg.setShort( "short", (short)1 );
+    msg.setString( "string", "string" );
+
+    msg.setReadOnlyBody( true );
+
+    msg.getBoolean( "boolean" );
+    msg.getByte( "byte" );
+    msg.getBytes( "bytes" );
+    msg.getChar( "char" );
+    msg.getDouble( "double" );
+    msg.getFloat( "float" );
+    msg.getInt( "int" );
+    msg.getLong( "long" );
+    msg.getShort( "short" );
+    msg.getString( "string" );
+}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMapMessageTest.h Thu Nov 19 23:37:26 2009
@@ -28,14 +28,51 @@
 
         CPPUNIT_TEST_SUITE( ActiveMQMapMessageTest );
         CPPUNIT_TEST( test );
+        CPPUNIT_TEST( testBytesConversion );
+        CPPUNIT_TEST( testGetBoolean );
+        CPPUNIT_TEST( testGetByte );
+        CPPUNIT_TEST( testGetShort );
+        CPPUNIT_TEST( testGetChar );
+        CPPUNIT_TEST( testGetInt );
+        CPPUNIT_TEST( testGetLong );
+        CPPUNIT_TEST( testGetFloat );
+        CPPUNIT_TEST( testGetDouble );
+        CPPUNIT_TEST( testGetString );
+        CPPUNIT_TEST( testGetBytes );
+        CPPUNIT_TEST( testGetMapNames );
+        CPPUNIT_TEST( testItemExists );
+        CPPUNIT_TEST( testClearBody );
+        CPPUNIT_TEST( testReadOnlyBody );
+        CPPUNIT_TEST( testWriteOnlyBody );
         CPPUNIT_TEST_SUITE_END();
 
+    private:
+
+        std::string name;
+
     public:
 
-        ActiveMQMapMessageTest() {}
+        ActiveMQMapMessageTest() { name = "test-name"; }
         virtual ~ActiveMQMapMessageTest() {}
 
-        virtual void test();
+        void test();
+        void testBytesConversion();
+        void testGetBoolean();
+        void testGetByte();
+        void testGetShort();
+        void testGetChar();
+        void testGetInt();
+        void testGetLong();
+        void testGetFloat();
+        void testGetDouble();
+        void testGetString();
+        void testGetBytes();
+        void testGetMapNames();
+        void testItemExists();
+        void testClearBody();
+        void testReadOnlyBody();
+        void testWriteOnlyBody();
+
     };
 
 }}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.cpp?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.cpp (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.cpp Thu Nov 19 23:37:26 2009
@@ -18,12 +18,82 @@
 #include "ActiveMQMessageTest.h"
 
 #include <activemq/commands/ActiveMQMessage.h>
+#include <activemq/commands/ActiveMQTopic.h>
+#include <activemq/commands/ActiveMQTempTopic.h>
+#include <activemq/commands/ProducerId.h>
 
+#include <decaf/lang/System.h>
+#include <decaf/lang/Pointer.h>
+
+using namespace cms;
 using namespace std;
 using namespace activemq;
 using namespace activemq::util;
 using namespace activemq::core;
 using namespace activemq::commands;
+using namespace decaf::lang;
+
+////////////////////////////////////////////////////////////////////////////////
+namespace{
+
+    class MyAckHandler : public core::ActiveMQAckHandler {
+    public:
+
+        MyAckHandler() {
+            this->wasAcked = false;
+        }
+
+        /**
+         * Method called to acknowledge the message passed
+         * @param message Message to Acknowledge
+         * @throw CMSException
+         */
+        virtual void acknowledgeMessage( const commands::Message* message )
+            throw ( cms::CMSException ) {
+
+            this->wasAcked = true;
+        }
+
+        /**
+         * Public indicator that we have received an ack
+         */
+        bool wasAcked;
+
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::setUp() {
+
+    Pointer<ProducerId> producerId( new ProducerId() );
+    producerId->setConnectionId( "testConnectionId" );
+    producerId->setSessionId( 11 );
+    producerId->setValue( 1 );
+
+    this->cmsMessageId.reset( new MessageId() );
+    this->cmsMessageId->setProducerId( producerId );
+    this->cmsMessageId->setProducerSequenceId( 12 );
+
+    this->cmsCorrelationID = "testcorrelationid";
+    this->cmsDestination.reset( new ActiveMQTopic( "test.topic" ) );
+    this->cmsReplyTo.reset( new ActiveMQTempTopic( "test.replyto.topic:001" ) );
+    this->cmsDeliveryMode = DeliveryMode::NON_PERSISTENT;
+    this->cmsRedelivered = true;
+    this->cmsType = "test type";
+    this->cmsExpiration = 100000;
+    this->cmsPriority = 5;
+    this->cmsTimestamp = System::currentTimeMillis();
+    this->readOnlyMessage = false;
+
+    for( int i = 0; i < 3; i++ ) {
+        this->consumerIDs.push_back( i );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::tearDown() {
+
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 void ActiveMQMessageTest::test()
@@ -67,3 +137,686 @@
     myMessage.setStringProperty( "JMSXGroupID", "hello" );
     CPPUNIT_ASSERT( myMessage.getStringProperty( "JMSXGroupID" ) == "hello" );
 }
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testSetReadOnly() {
+
+    ActiveMQMessage msg;
+    msg.setReadOnlyProperties( true );
+    bool test = false;
+
+    try {
+        msg.setIntProperty( "test", 1 );
+    } catch( MessageNotWriteableException& me ) {
+        test = true;
+    } catch( CMSException& e ) {
+        e.printStackTrace();
+        test = false;
+    }
+
+    CPPUNIT_ASSERT( test );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testSetToForeignJMSID() {
+
+    ActiveMQMessage msg;
+    msg.setCMSMessageID( "ID:EMS-SERVER.8B443C380083:429" );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testEqualsObject() {
+
+    ActiveMQMessage msg1;
+    ActiveMQMessage msg2;
+
+    msg1.setMessageId( this->cmsMessageId );
+    CPPUNIT_ASSERT( !msg1.equals( &msg2 ) );
+
+    msg2.setMessageId( this->cmsMessageId );
+    CPPUNIT_ASSERT( msg1.equals( &msg2 ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testShallowCopy() {
+
+    ActiveMQMessage msg1;
+    msg1.setMessageId( this->cmsMessageId );
+
+    ActiveMQMessage msg2;
+    msg2.copyDataStructure( &msg1 );
+
+    CPPUNIT_ASSERT( msg1.equals( &msg2 ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testCopy() {
+
+    this->cmsCorrelationID = "testcorrelationid";
+    this->cmsDestination.reset( new ActiveMQTopic( "test.topic" ) );
+    this->cmsReplyTo.reset( new ActiveMQTempTopic( "test.replyto.topic:001" ) );
+    this->cmsRedelivered = true;
+    this->cmsType = "test type";
+    this->cmsExpiration = 100000;
+    this->cmsPriority = 5;
+    this->cmsTimestamp = System::currentTimeMillis();
+    this->readOnlyMessage = false;
+
+    ActiveMQMessage msg1;
+    msg1.setMessageId( this->cmsMessageId );
+    msg1.setCMSCorrelationID( this->cmsCorrelationID );
+    msg1.setCMSDestination( this->cmsDestination.get() );
+    msg1.setCMSReplyTo( this->cmsReplyTo.get() );
+    msg1.setCMSDeliveryMode( this->cmsDeliveryMode );
+    msg1.setCMSRedelivered( this->cmsRedelivered );
+    msg1.setCMSType( this->cmsType );
+    msg1.setCMSExpiration( this->cmsExpiration );
+    msg1.setCMSPriority( this->cmsPriority );
+    msg1.setCMSTimestamp( this->cmsTimestamp );
+    msg1.setReadOnlyProperties( true );
+
+    ActiveMQMessage msg2;
+    msg2.copyDataStructure( &msg1 );
+
+    CPPUNIT_ASSERT( msg1.getCMSMessageID() == msg2.getCMSMessageID() );
+    CPPUNIT_ASSERT( msg1.getCMSCorrelationID() == msg2.getCMSCorrelationID() );
+    CPPUNIT_ASSERT( msg1.getCMSDestination() == msg2.getCMSDestination() );
+    CPPUNIT_ASSERT( msg1.getCMSReplyTo() == msg2.getCMSReplyTo() );
+    CPPUNIT_ASSERT( msg1.getCMSDeliveryMode() == msg2.getCMSDeliveryMode() );
+    CPPUNIT_ASSERT( msg1.getCMSRedelivered() == msg2.getCMSRedelivered() );
+    CPPUNIT_ASSERT( msg1.getCMSType() == msg2.getCMSType() );
+    CPPUNIT_ASSERT( msg1.getCMSExpiration() == msg2.getCMSExpiration() );
+    CPPUNIT_ASSERT( msg1.getCMSPriority() == msg2.getCMSPriority() );
+    CPPUNIT_ASSERT( msg1.getCMSTimestamp() == msg2.getCMSTimestamp() );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSMessageID() {
+
+    ActiveMQMessage msg;
+    msg.setMessageId( this->cmsMessageId );
+    CPPUNIT_ASSERT( msg.getMessageId() == this->cmsMessageId );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSTimestamp() {
+
+    ActiveMQMessage msg;
+    msg.setCMSTimestamp( this->cmsTimestamp );
+    CPPUNIT_ASSERT( msg.getCMSTimestamp() == this->cmsTimestamp );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSCorrelationID() {
+
+    ActiveMQMessage msg;
+    msg.setCMSCorrelationID( this->cmsCorrelationID );
+    CPPUNIT_ASSERT( msg.getCMSCorrelationID() == this->cmsCorrelationID );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSDeliveryMode() {
+
+    ActiveMQMessage msg;
+    msg.setCMSDeliveryMode( this->cmsDeliveryMode );
+    CPPUNIT_ASSERT( msg.getCMSDeliveryMode() == this->cmsDeliveryMode );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSRedelivered() {
+
+    ActiveMQMessage msg;
+    msg.setRedeliveryCounter( 1 );
+    CPPUNIT_ASSERT( msg.getCMSRedelivered() == true );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSType() {
+
+    ActiveMQMessage msg;
+    msg.setCMSType( this->cmsType );
+    CPPUNIT_ASSERT( msg.getCMSType() == this->cmsType );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSExpiration() {
+
+    ActiveMQMessage msg;
+    msg.setCMSExpiration( this->cmsExpiration );
+    CPPUNIT_ASSERT( msg.getCMSExpiration() == this->cmsExpiration );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSPriority() {
+
+    ActiveMQMessage msg;
+    msg.setCMSPriority( this->cmsPriority );
+    CPPUNIT_ASSERT( msg.getCMSPriority() == this->cmsPriority );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testClearProperties() {
+
+    ActiveMQMessage msg;
+
+    std::vector<unsigned char> buffer( 20 );
+
+    msg.setStringProperty( "test", "test" );
+    msg.setContent( buffer );
+    msg.setMessageId( this->cmsMessageId );
+    msg.clearProperties();
+
+    CPPUNIT_ASSERT( !msg.propertyExists( "test" ) );
+    CPPUNIT_ASSERT( msg.getCMSMessageID() != "" );
+    CPPUNIT_ASSERT( msg.getContent().size() == 20 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testPropertyExists() {
+
+    ActiveMQMessage msg;
+    msg.setStringProperty( "test", "test" );
+    CPPUNIT_ASSERT( msg.propertyExists( "test" ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetBooleanProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "booleanProperty";
+    msg.setBooleanProperty( name, true );
+    CPPUNIT_ASSERT( msg.getBooleanProperty( name ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetByteProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "byteProperty";
+    msg.setByteProperty( name, (unsigned char)1 );
+    CPPUNIT_ASSERT( msg.getByteProperty( name ) == 1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetShortProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "shortProperty";
+    msg.setShortProperty( name, (short)1 );
+    CPPUNIT_ASSERT( msg.getShortProperty( name ) == 1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetIntProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "intProperty";
+    msg.setIntProperty( name, 1 );
+    CPPUNIT_ASSERT( msg.getIntProperty( name ) == 1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetLongProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "longProperty";
+    msg.setLongProperty( name, 1 );
+    CPPUNIT_ASSERT( msg.getLongProperty( name ) == 1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetFloatProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "floatProperty";
+    msg.setFloatProperty( name, 1.3f );
+    CPPUNIT_ASSERT( msg.getFloatProperty( name ) == 1.3f );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetDoubleProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "doubleProperty";
+    msg.setDoubleProperty( name, 1.3 );
+    CPPUNIT_ASSERT( msg.getDoubleProperty( name ) == 1.3 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetStringProperty() {
+
+    ActiveMQMessage msg;
+    std::string name = "stringProperty";
+    msg.setStringProperty( name, name );
+    CPPUNIT_ASSERT( msg.getStringProperty( name ) == name );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetPropertyNames() {
+
+    ActiveMQMessage msg;
+    std::string name = "floatProperty";
+    msg.setFloatProperty( name, 1.3f );
+
+    std::vector<std::string> propertyNames = msg.getPropertyNames();
+    std::vector<std::string>::iterator iter = propertyNames.begin();
+
+    for( ; iter != propertyNames.end(); ++iter ) {
+        CPPUNIT_ASSERT( *iter == name );
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testSetEmptyPropertyName() {
+
+    ActiveMQMessage msg;
+
+    try {
+        msg.setStringProperty("", "Cheese");
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( CMSException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testGetAndSetCMSXDeliveryCount() {
+
+    ActiveMQMessage msg;
+    msg.setIntProperty( "CMSXDeliveryCount", 1 );
+    int count = msg.getIntProperty( "CMSXDeliveryCount" );
+    CPPUNIT_ASSERT_MESSAGE( "expected delivery count = 1 - got: " + count, count == 1 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testClearBody() {
+
+    ActiveMQMessage message;
+    message.clearBody();
+    CPPUNIT_ASSERT( !message.isReadOnlyBody() );
+    CPPUNIT_ASSERT( message.getContent().size() == 0 );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testBooleanPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setBooleanProperty( propertyName, true );
+
+    CPPUNIT_ASSERT( msg.getBooleanProperty( propertyName ) );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "true" );
+
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getIntProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getLongProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testBytePropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setByteProperty( propertyName, (unsigned char)1 );
+
+    CPPUNIT_ASSERT( msg.getByteProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getShortProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getIntProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getLongProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testShortPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setShortProperty( propertyName, (short)1 );
+
+    CPPUNIT_ASSERT( msg.getShortProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getIntProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getLongProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testIntPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setIntProperty( propertyName, (int)1 );
+
+    CPPUNIT_ASSERT( msg.getIntProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getLongProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testLongPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setLongProperty( propertyName, 1 );
+
+    CPPUNIT_ASSERT( msg.getLongProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getIntProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testFloatPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setFloatProperty( propertyName, (float)1.5 );
+
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg.getFloatProperty( propertyName ), 1.5, 0 );
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg.getDoubleProperty( propertyName ), 1.5, 0 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1.5" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getIntProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getLongProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testDoublePropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setDoubleProperty( propertyName, 1.5 );
+
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg.getDoubleProperty( propertyName ), 1.5, 0 );
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == "1.5" );
+
+    try {
+        msg.getBooleanProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getIntProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getLongProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testStringPropertyConversion() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    std::string stringValue = "true";
+
+    msg.setStringProperty( propertyName, stringValue );
+
+    CPPUNIT_ASSERT( msg.getStringProperty( propertyName ) == stringValue );
+    CPPUNIT_ASSERT( msg.getBooleanProperty( propertyName ) == true );
+
+    stringValue = "1";
+    msg.setStringProperty( propertyName, stringValue );
+    CPPUNIT_ASSERT( msg.getByteProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getShortProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getIntProperty( propertyName ) == 1 );
+    CPPUNIT_ASSERT( msg.getLongProperty( propertyName ) == 1 );
+
+    stringValue = "1.5";
+    msg.setStringProperty( propertyName, stringValue );
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg.getFloatProperty( propertyName ), 1.5, 0 );
+    CPPUNIT_ASSERT_DOUBLES_EQUAL( msg.getDoubleProperty( propertyName ), 1.5, 0 );
+
+    stringValue = "bad";
+    msg.setStringProperty( propertyName, stringValue );
+    try {
+        msg.getByteProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getShortProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getIntProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getLongProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getFloatProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+    try {
+        msg.getDoubleProperty( propertyName );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageFormatException& e ) {
+    }
+
+    CPPUNIT_ASSERT( !msg.getBooleanProperty( propertyName ) );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testReadOnlyProperties() {
+
+    ActiveMQMessage msg;
+    std::string propertyName = "property";
+    msg.setReadOnlyProperties( true );
+
+    try {
+        msg.setStringProperty( propertyName, "test" );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setBooleanProperty( propertyName, true );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setByteProperty( propertyName, (unsigned char)1 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setShortProperty( propertyName, (short)1 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setIntProperty( propertyName, 1 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setLongProperty( propertyName, 1 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setFloatProperty( propertyName, (float)1.5 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+    try {
+        msg.setDoubleProperty( propertyName, 1.5 );
+        CPPUNIT_FAIL("Should have thrown exception");
+    } catch( MessageNotWriteableException& e ) {
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ActiveMQMessageTest::testIsExpired() {
+
+    ActiveMQMessage msg;
+    msg.setCMSExpiration( System::currentTimeMillis() - 100 );
+    CPPUNIT_ASSERT( msg.isExpired() );
+    msg.setCMSExpiration( System::currentTimeMillis() + 10000 );
+    CPPUNIT_ASSERT( !msg.isExpired() );
+}

Modified: activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.h?rev=882361&r1=882360&r2=882361&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.h (original)
+++ activemq/activemq-cpp/trunk/activemq-cpp/src/test/activemq/commands/ActiveMQMessageTest.h Thu Nov 19 23:37:26 2009
@@ -22,6 +22,15 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include <activemq/core/ActiveMQAckHandler.h>
+#include <activemq/commands/ActiveMQDestination.h>
+#include <activemq/commands/ActiveMQTopic.h>
+#include <activemq/commands/ActiveMQTempTopic.h>
+#include <activemq/commands/MessageId.h>
+
+#include <decaf/lang/Pointer.h>
+
+#include <vector>
+#include <memory>
 
 namespace activemq{
 namespace commands{
@@ -30,39 +39,106 @@
 
         CPPUNIT_TEST_SUITE( ActiveMQMessageTest );
         CPPUNIT_TEST( test );
+        CPPUNIT_TEST( testSetReadOnly );
+        CPPUNIT_TEST( testSetToForeignJMSID );
+        CPPUNIT_TEST( testEqualsObject );
+        CPPUNIT_TEST( testShallowCopy );
+        CPPUNIT_TEST( testCopy );
+        CPPUNIT_TEST( testGetAndSetCMSMessageID );
+        CPPUNIT_TEST( testGetAndSetCMSTimestamp );
+        CPPUNIT_TEST( testGetAndSetCMSCorrelationID );
+        CPPUNIT_TEST( testGetAndSetCMSDeliveryMode );
+        CPPUNIT_TEST( testGetAndSetCMSRedelivered );
+        CPPUNIT_TEST( testGetAndSetCMSType );
+        CPPUNIT_TEST( testGetAndSetCMSExpiration );
+        CPPUNIT_TEST( testGetAndSetCMSPriority );
+        CPPUNIT_TEST( testClearProperties );
+        CPPUNIT_TEST( testPropertyExists );
+        CPPUNIT_TEST( testGetBooleanProperty );
+        CPPUNIT_TEST( testGetByteProperty );
+        CPPUNIT_TEST( testGetShortProperty );
+        CPPUNIT_TEST( testGetIntProperty );
+        CPPUNIT_TEST( testGetLongProperty );
+        CPPUNIT_TEST( testGetFloatProperty );
+        CPPUNIT_TEST( testGetDoubleProperty );
+        CPPUNIT_TEST( testGetStringProperty );
+        CPPUNIT_TEST( testGetPropertyNames );
+        CPPUNIT_TEST( testSetEmptyPropertyName );
+        CPPUNIT_TEST( testGetAndSetCMSXDeliveryCount );
+        CPPUNIT_TEST( testClearBody );
+        CPPUNIT_TEST( testBooleanPropertyConversion );
+        CPPUNIT_TEST( testBytePropertyConversion );
+        CPPUNIT_TEST( testShortPropertyConversion );
+        CPPUNIT_TEST( testIntPropertyConversion );
+        CPPUNIT_TEST( testLongPropertyConversion );
+        CPPUNIT_TEST( testFloatPropertyConversion );
+        CPPUNIT_TEST( testDoublePropertyConversion );
+        CPPUNIT_TEST( testReadOnlyProperties );
+        CPPUNIT_TEST( testIsExpired );
         CPPUNIT_TEST_SUITE_END();
 
-        class MyAckHandler : public core::ActiveMQAckHandler {
-        public:
+    private:
 
-            MyAckHandler() {
-                this->wasAcked = false;
-            }
-
-            /**
-             * Method called to acknowledge the message passed
-             * @param message Message to Acknowlegde
-             * @throw CMSException
-             */
-            virtual void acknowledgeMessage( const commands::Message* message )
-                throw ( cms::CMSException ) {
-
-                this->wasAcked = true;
-            }
-
-            /**
-             * Public indicator that we have received an ack
-             */
-            bool wasAcked;
+        bool readOnlyMessage;
+        decaf::lang::Pointer<commands::MessageId> cmsMessageId;
+        std::string cmsCorrelationID;
+        std::auto_ptr<commands::ActiveMQTopic> cmsDestination;
+        std::auto_ptr<commands::ActiveMQTempTopic> cmsReplyTo;
+        int cmsDeliveryMode;
+        bool cmsRedelivered;
+        std::string cmsType;
+        long long cmsExpiration;
+        int cmsPriority;
+        long long cmsTimestamp;
 
-        };
+        std::vector<long long> consumerIDs;
 
     public:
 
         ActiveMQMessageTest() {}
         virtual ~ActiveMQMessageTest() {}
 
-        virtual void test();
+        virtual void setUp();
+        virtual void tearDown();
+
+        void test();
+        void testSetReadOnly();
+        void testSetToForeignJMSID();
+        void testEqualsObject();
+        void testShallowCopy();
+        void testCopy();
+        void testGetAndSetCMSMessageID();
+        void testGetAndSetCMSTimestamp();
+        void testGetAndSetCMSCorrelationID();
+        void testGetAndSetCMSDeliveryMode();
+        void testGetAndSetCMSRedelivered();
+        void testGetAndSetCMSType();
+        void testGetAndSetCMSExpiration();
+        void testGetAndSetCMSPriority();
+        void testClearProperties();
+        void testPropertyExists();
+        void testGetBooleanProperty();
+        void testGetByteProperty();
+        void testGetShortProperty();
+        void testGetIntProperty();
+        void testGetLongProperty();
+        void testGetFloatProperty();
+        void testGetDoubleProperty();
+        void testGetStringProperty();
+        void testGetPropertyNames();
+        void testSetEmptyPropertyName();
+        void testGetAndSetCMSXDeliveryCount();
+        void testClearBody();
+        void testBooleanPropertyConversion();
+        void testBytePropertyConversion();
+        void testShortPropertyConversion();
+        void testIntPropertyConversion();
+        void testLongPropertyConversion();
+        void testFloatPropertyConversion();
+        void testDoublePropertyConversion();
+        void testStringPropertyConversion();
+        void testReadOnlyProperties();
+        void testIsExpired();
 
     };