You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by nm...@apache.org on 2006/07/03 13:51:54 UTC

svn commit: r418749 [14/17] - in /incubator/activemq/trunk/activemq-cpp: ./ src/ src/main/ src/main/activemq/ src/main/activemq/concurrent/ src/main/activemq/connector/ src/main/activemq/connector/openwire/ src/main/activemq/connector/stomp/ src/main/a...

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompConnectorTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,319 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/StompResponseBuilder.h>
+#include <activemq/connector/stomp/StompConnector.h>
+#include <activemq/transport/Command.h>
+#include <activemq/connector/stomp/commands/ConnectedCommand.h>
+#include <activemq/connector/stomp/commands/TextMessageCommand.h>
+#include <activemq/connector/stomp/commands/BytesMessageCommand.h>
+#include <activemq/connector/stomp/StompTopic.h>
+#include <activemq/connector/stomp/StompQueue.h>
+#include <activemq/transport/DummyTransport.h>
+
+#include <activemq/io/ByteArrayOutputStream.h>
+#include <algorithm>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompConnectorTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( StompConnectorTest );
+        CPPUNIT_TEST( testSessions );
+        CPPUNIT_TEST( testConsumers );
+        CPPUNIT_TEST( testProducers );
+        CPPUNIT_TEST( testCommand );
+        CPPUNIT_TEST( testSendingCommands );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+    
+    	StompConnectorTest() {}
+    	virtual ~StompConnectorTest() {}
+        
+        class MyCommandListener : public transport::CommandListener{
+        public:
+        
+            transport::Command* cmd;
+            
+        public:
+        
+            MyCommandListener(){
+                cmd = NULL;
+            }
+            virtual ~MyCommandListener(){}
+            
+            virtual void onCommand( transport::Command* command ){
+                cmd = command;
+            }
+        };
+        
+        class MyMessageListener : public ConsumerMessageListener{
+        public:
+        
+            std::vector<ConsumerInfo*> consumers;
+            
+        public:
+            virtual ~MyMessageListener(){}
+            
+            virtual void onConsumerMessage( ConsumerInfo* consumer,
+                core::ActiveMQMessage* msg )
+            {
+                consumers.push_back( consumer );
+            }
+        };
+
+        void testSessions()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testConnectionId");
+            transport::DummyTransport transport( &responseBuilder );
+            util::SimpleProperties properties;
+            StompConnector connector( &transport, properties );
+            connector.start();
+            
+            SessionInfo* info1 = connector.createSession( cms::Session::AutoAcknowledge );
+            CPPUNIT_ASSERT( info1->getAckMode() == cms::Session::AutoAcknowledge );
+            CPPUNIT_ASSERT( info1->getConnectionId() == connectionId );
+            
+            SessionInfo* info2 = connector.createSession( cms::Session::DupsOkAcknowledge );
+            CPPUNIT_ASSERT( info2->getAckMode() == cms::Session::DupsOkAcknowledge );
+            CPPUNIT_ASSERT( info2->getConnectionId() == connectionId );
+            
+            SessionInfo* info3 = connector.createSession( cms::Session::ClientAcknowledge );
+            CPPUNIT_ASSERT( info3->getAckMode() == cms::Session::ClientAcknowledge );
+            CPPUNIT_ASSERT( info3->getConnectionId() == connectionId );
+            
+            SessionInfo* info4 = connector.createSession( cms::Session::Transactional );
+            CPPUNIT_ASSERT( info4->getAckMode() == cms::Session::Transactional );
+            CPPUNIT_ASSERT( info4->getConnectionId() == connectionId );
+            
+            connector.destroyResource( info1 );
+            connector.destroyResource( info2 );
+            connector.destroyResource( info3 );
+            connector.destroyResource( info4 );
+
+        }
+        
+        void testConsumers()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testConnectionId");
+            transport::DummyTransport transport( &responseBuilder );
+            util::SimpleProperties properties;
+            StompConnector connector( &transport, properties );
+            connector.start();
+            
+            SessionInfo* info1 = connector.createSession( cms::Session::AutoAcknowledge );
+            std::string sel1 = "";
+            StompTopic dest1( "dummy.topic.1" );
+            ConsumerInfo* cinfo1 = connector.createConsumer( &dest1, info1, sel1 );
+            CPPUNIT_ASSERT( cinfo1->getSessionInfo() == info1 );
+            CPPUNIT_ASSERT( cinfo1->getDestination().toString() == dest1.toString() );
+            CPPUNIT_ASSERT( cinfo1->getMessageSelector() == sel1 );
+            
+            SessionInfo* info2 = connector.createSession( cms::Session::DupsOkAcknowledge );
+            std::string sel2 = "mysel2";
+            StompTopic dest2( "dummy.topic.2" );
+            ConsumerInfo* cinfo2 = connector.createConsumer( &dest2, info2, sel2 );
+            CPPUNIT_ASSERT( cinfo2->getSessionInfo() == info2 );
+            CPPUNIT_ASSERT( cinfo2->getDestination().toString() == dest2.toString() );
+            CPPUNIT_ASSERT( cinfo2->getMessageSelector() == sel2 );
+            
+            SessionInfo* info3 = connector.createSession( cms::Session::ClientAcknowledge );
+            std::string sel3 = "mysel3";
+            StompQueue dest3( "dummy.queue.1" );
+            ConsumerInfo* cinfo3 = connector.createConsumer( &dest3, info3, sel3 );
+            CPPUNIT_ASSERT( cinfo3->getSessionInfo() == info3 );
+            CPPUNIT_ASSERT( cinfo3->getDestination().toString() == dest3.toString() );
+            CPPUNIT_ASSERT( cinfo3->getMessageSelector() == sel3 );
+            
+            SessionInfo* info4 = connector.createSession( cms::Session::Transactional );
+            std::string sel4 = "";
+            StompTopic dest4( "dummy.queue.2" );
+            ConsumerInfo* cinfo4 = connector.createConsumer( &dest4, info4, sel4 );
+            CPPUNIT_ASSERT( cinfo4->getSessionInfo() == info4 );
+            CPPUNIT_ASSERT( cinfo4->getDestination().toString() == dest4.toString() );
+            CPPUNIT_ASSERT( cinfo4->getMessageSelector() == sel4 );
+            
+            connector.destroyResource( cinfo1 );
+            connector.destroyResource( cinfo2 );
+            connector.destroyResource( cinfo3 );
+            connector.destroyResource( cinfo4 );
+
+            connector.destroyResource( info1 );
+            connector.destroyResource( info2 );
+            connector.destroyResource( info3 );
+            connector.destroyResource( info4 );
+        }
+
+        void testProducers()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testConnectionId");
+            transport::DummyTransport transport( &responseBuilder );
+            util::SimpleProperties properties;
+            StompConnector connector( &transport, properties );
+            connector.start();
+            
+            SessionInfo* info1 = connector.createSession( cms::Session::AutoAcknowledge );
+            StompTopic dest1( "dummy.topic.1" );
+            ProducerInfo* pinfo1 = connector.createProducer( &dest1, info1 );
+            CPPUNIT_ASSERT( pinfo1->getSessionInfo() == info1 );
+            CPPUNIT_ASSERT( pinfo1->getDestination().toString() == dest1.toString() );
+            
+            SessionInfo* info2 = connector.createSession( cms::Session::DupsOkAcknowledge );
+            StompTopic dest2( "dummy.topic.2" );
+            ProducerInfo* pinfo2 = connector.createProducer( &dest2, info2 );
+            CPPUNIT_ASSERT( pinfo2->getSessionInfo() == info2 );
+            CPPUNIT_ASSERT( pinfo2->getDestination().toString() == dest2.toString() );
+            
+            SessionInfo* info3 = connector.createSession( cms::Session::ClientAcknowledge );
+            StompQueue dest3( "dummy.queue.1" );
+            ProducerInfo* pinfo3 = connector.createProducer( &dest3, info3 );
+            CPPUNIT_ASSERT( pinfo3->getSessionInfo() == info3 );
+            CPPUNIT_ASSERT( pinfo3->getDestination().toString() == dest3.toString() );
+            
+            SessionInfo* info4 = connector.createSession( cms::Session::Transactional );
+            StompTopic dest4( "dummy.queue.2" );
+            ProducerInfo* pinfo4 = connector.createProducer( &dest4, info4 );
+            CPPUNIT_ASSERT( pinfo4->getSessionInfo() == info4 );
+            CPPUNIT_ASSERT( pinfo4->getDestination().toString() == dest4.toString() );
+            
+            connector.destroyResource( pinfo1 );
+            connector.destroyResource( pinfo2 );
+            connector.destroyResource( pinfo3 );
+            connector.destroyResource( pinfo4 );
+
+            connector.destroyResource( info1 );
+            connector.destroyResource( info2 );
+            connector.destroyResource( info3 );
+            connector.destroyResource( info4 );
+        }
+        
+        void testCommand()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testConnectionId");
+            transport::DummyTransport transport( &responseBuilder );
+            util::SimpleProperties properties;
+            StompConnector connector( &transport, properties );
+            connector.start();
+            
+            StompTopic dest1( "dummy.topic" );
+            StompTopic dest2( "dummy.topic2" );
+            
+            SessionInfo* info1 = connector.createSession( cms::Session::AutoAcknowledge );
+            ConsumerInfo* cinfo1 = connector.createConsumer( &dest1, info1, "" );
+            
+            SessionInfo* info2 = connector.createSession( cms::Session::DupsOkAcknowledge );
+            ConsumerInfo* cinfo2 = connector.createConsumer( &dest1, info2, "" );
+            
+            SessionInfo* info3 = connector.createSession( cms::Session::ClientAcknowledge );
+            ConsumerInfo* cinfo3 = connector.createConsumer( &dest2, info3, "" );
+            
+            SessionInfo* info4 = connector.createSession( cms::Session::Transactional );
+            ConsumerInfo* cinfo4 = connector.createConsumer( &dest2, info4, "" );
+            
+            MyMessageListener listener;
+            connector.setConsumerMessageListener( &listener );
+            
+            StompFrame* frame = new StompFrame();
+            frame->setCommand( "MESSAGE" );
+            frame->getProperties().setProperty( 
+                "destination", dest1.toProviderString() );
+            const char* buffer = strdup("hello world");
+            frame->setBody( buffer, 12 );
+
+            commands::TextMessageCommand* msg = 
+                new commands::TextMessageCommand( frame );
+            transport.fireCommand( msg );
+            
+            CPPUNIT_ASSERT( listener.consumers.size() == 2 );
+            for( unsigned int ix=0; ix<listener.consumers.size(); ++ix ){
+                CPPUNIT_ASSERT( listener.consumers[ix] == cinfo1 || 
+                    listener.consumers[ix] == cinfo2 );
+            }
+            
+            // Clean up the consumers list
+            listener.consumers.clear();
+            
+            frame = new StompFrame();
+            frame->setCommand( "MESSAGE" );
+            frame->getProperties().setProperty( 
+                "destination", dest2.toProviderString() );
+            buffer = strdup("hello world");
+            frame->setBody( buffer, 12 );
+
+            msg = new commands::TextMessageCommand( frame );
+            transport.fireCommand( msg );
+            
+            CPPUNIT_ASSERT( listener.consumers.size() == 2 );
+            for( unsigned int ix=0; ix<listener.consumers.size(); ++ix ){
+                CPPUNIT_ASSERT( listener.consumers[ix] == cinfo3 || 
+                    listener.consumers[ix] == cinfo4 );
+            }
+                        
+            connector.destroyResource( cinfo1 );
+            connector.destroyResource( cinfo2 );
+            connector.destroyResource( cinfo3 );
+            connector.destroyResource( cinfo4 );
+
+            connector.destroyResource( info1 );
+            connector.destroyResource( info2 );
+            connector.destroyResource( info3 );
+            connector.destroyResource( info4 );
+        }
+        
+        void testSendingCommands()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testConnectionId");
+            transport::DummyTransport transport( &responseBuilder );
+            util::SimpleProperties properties;
+            StompConnector* connector = 
+                new StompConnector( &transport, properties );
+            connector->start();
+            
+            StompTopic dest1( "dummy.topic.1" );
+            
+            MyCommandListener cmdListener;
+            transport.setOutgoingCommandListener( &cmdListener );
+            
+            SessionInfo* info1 = connector->createSession( cms::Session::AutoAcknowledge );
+            ConsumerInfo* cinfo1 = connector->createConsumer( &dest1, info1, "" );                    
+            CPPUNIT_ASSERT( cmdListener.cmd != NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            SessionInfo* info2 = connector->createSession( cms::Session::DupsOkAcknowledge );
+            ConsumerInfo* cinfo2 = connector->createConsumer( &dest1, info2, "" );
+            CPPUNIT_ASSERT( cmdListener.cmd == NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            connector->destroyResource( cinfo1 );
+            CPPUNIT_ASSERT( cmdListener.cmd == NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            connector->destroyResource( cinfo2 );
+            CPPUNIT_ASSERT( cmdListener.cmd != NULL );
+            
+            connector->destroyResource( info1 );
+            connector->destroyResource( info2 );
+            
+            delete connector;
+            CPPUNIT_ASSERT( cmdListener.cmd != NULL );
+        }
+
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPCONNECTORTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "StompFrameTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::StompFrameTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompFrameTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,52 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMETEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMETEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/StompFrame.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+   class StompFrameTest : public CppUnit::TestFixture
+   {
+
+     CPPUNIT_TEST_SUITE( StompFrameTest );
+     CPPUNIT_TEST( test );
+     CPPUNIT_TEST_SUITE_END();
+
+   public:
+
+   	virtual ~StompFrameTest() {}
+
+      void test()
+      {
+         StompFrame frame;
+         
+         CPPUNIT_ASSERT( frame.getCommand() == "" );
+         frame.setCommand("test");
+         CPPUNIT_ASSERT( frame.getCommand() == "test" );
+                  
+         frame.getProperties().setProperty("key", "value");
+         
+         std::string result = frame.getProperties().getProperty("key");
+         
+         CPPUNIT_ASSERT( result == "value" );         
+         
+         CPPUNIT_ASSERT( frame.getBody() == NULL );
+         CPPUNIT_ASSERT( frame.getBodyLength() == 0 );
+         
+         frame.setBody( strdup("ABC"), 4 );
+         
+         CPPUNIT_ASSERT( frame.getBody() != NULL );
+         CPPUNIT_ASSERT( frame.getBodyLength() == 4 );
+         CPPUNIT_ASSERT( std::string(frame.getBody()) == "ABC" );
+      }
+      
+   };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPFRAMETEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompResponseBuilder.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompResponseBuilder.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompResponseBuilder.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompResponseBuilder.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,45 @@
+#ifndef ACTIVEMQ_CONNECTOR_STOMP_STOMPRESPONSEBUILDER_H_
+#define ACTIVEMQ_CONNECTOR_STOMP_STOMPRESPONSEBUILDER_H_
+
+#include <activemq/transport/DummyTransport.h>
+#include <activemq/connector/stomp/commands/ConnectCommand.h>
+#include <activemq/connector/stomp/commands/ConnectedCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+    
+    class StompResponseBuilder : public transport::DummyTransport::ResponseBuilder{
+        
+    private:
+    
+        std::string sessionId;
+        
+    public:
+    
+        StompResponseBuilder( const std::string& sessionId ){
+            this->sessionId = sessionId;
+        }
+        
+        virtual ~StompResponseBuilder(){}
+        
+        virtual transport::Response* buildResponse( const transport::Command* cmd ){
+            
+            const commands::ConnectCommand* connectCommand = 
+                dynamic_cast<const commands::ConnectCommand*>(cmd);
+                
+            if( connectCommand != NULL ){
+                commands::ConnectedCommand* resp = new commands::ConnectedCommand();
+                resp->setCorrelationId( connectCommand->getCommandId() );
+                resp->setSessionId( sessionId );
+                return resp;                
+            }
+            
+            throw transport::CommandIOException( __FILE__, __LINE__,
+                "StompResponseBuilder - unrecognized command" );
+        }
+    };
+    
+}}}
+
+#endif /*ACTIVEMQ_CONNECTOR_STOMP_STOMPRESPONSEBUILDER_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "StompSessionManagerTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::StompSessionManagerTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/StompSessionManagerTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,252 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONMANAGERTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONMANAGERTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/StompSessionManager.h>
+#include <activemq/connector/stomp/StompResponseBuilder.h>
+#include <activemq/connector/stomp/StompTopic.h>
+#include <activemq/connector/stomp/StompQueue.h>
+#include <activemq/transport/DummyTransport.h>
+#include <activemq/connector/stomp/commands/TextMessageCommand.h>
+#include <activemq/transport/CommandListener.h>
+#include <cms/Session.h>
+#include <vector>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+
+    class StompSessionManagerTest : public CppUnit::TestFixture
+    {
+
+        CPPUNIT_TEST_SUITE( StompSessionManagerTest );
+        CPPUNIT_TEST( testSessions );
+        CPPUNIT_TEST( testConsumers );
+        CPPUNIT_TEST( testCommand );
+        CPPUNIT_TEST( testSendingCommands );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+    
+        class MyCommandListener : public transport::CommandListener{
+        public:
+        
+            transport::Command* cmd;
+            
+        public:
+        
+            MyCommandListener(){
+                cmd = NULL;
+            }
+            virtual ~MyCommandListener(){}
+            
+            virtual void onCommand( transport::Command* command ){
+                cmd = command;
+            }
+        };
+        
+        class MyMessageListener : public ConsumerMessageListener{
+        public:
+        
+            std::vector<ConsumerInfo*> consumers;
+            
+        public:
+            virtual ~MyMessageListener(){}
+            
+            virtual void onConsumerMessage( ConsumerInfo* consumer,
+                core::ActiveMQMessage* msg )
+            {
+                consumers.push_back( consumer );
+            }
+        };
+
+        virtual ~StompSessionManagerTest() {}
+
+        void testSessions()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testSessionId");
+            transport::DummyTransport transport( &responseBuilder );
+            StompSessionManager manager( connectionId, &transport );
+            
+            SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge );
+            CPPUNIT_ASSERT( info1->getAckMode() == cms::Session::AutoAcknowledge );
+            CPPUNIT_ASSERT( info1->getConnectionId() == connectionId );
+            
+            SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge );
+            CPPUNIT_ASSERT( info2->getAckMode() == cms::Session::DupsOkAcknowledge );
+            CPPUNIT_ASSERT( info2->getConnectionId() == connectionId );
+            
+            SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge );
+            CPPUNIT_ASSERT( info3->getAckMode() == cms::Session::ClientAcknowledge );
+            CPPUNIT_ASSERT( info3->getConnectionId() == connectionId );
+            
+            SessionInfo* info4 = manager.createSession( cms::Session::Transactional );
+            CPPUNIT_ASSERT( info4->getAckMode() == cms::Session::Transactional );
+            CPPUNIT_ASSERT( info4->getConnectionId() == connectionId );
+            
+            delete info1;
+            delete info2;
+            delete info3;
+            delete info4;
+        }
+        
+        void testConsumers()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testSessionId");
+            transport::DummyTransport transport( &responseBuilder );
+            StompSessionManager manager( connectionId, &transport );
+            
+            SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge );
+            std::string sel1 = "";
+            StompTopic dest1( "dummy.topic.1" );
+            ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, sel1 );
+            CPPUNIT_ASSERT( cinfo1->getSessionInfo() == info1 );
+            CPPUNIT_ASSERT( cinfo1->getDestination().toString() == dest1.toString() );
+            CPPUNIT_ASSERT( cinfo1->getMessageSelector() == sel1 );
+            
+            SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge );
+            std::string sel2 = "mysel2";
+            StompTopic dest2( "dummy.topic.2" );
+            ConsumerInfo* cinfo2 = manager.createConsumer( &dest2, info2, sel2 );
+            CPPUNIT_ASSERT( cinfo2->getSessionInfo() == info2 );
+            CPPUNIT_ASSERT( cinfo2->getDestination().toString() == dest2.toString() );
+            CPPUNIT_ASSERT( cinfo2->getMessageSelector() == sel2 );
+            
+            SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge );
+            std::string sel3 = "mysel3";
+            StompQueue dest3( "dummy.queue.1" );
+            ConsumerInfo* cinfo3 = manager.createConsumer( &dest3, info3, sel3 );
+            CPPUNIT_ASSERT( cinfo3->getSessionInfo() == info3 );
+            CPPUNIT_ASSERT( cinfo3->getDestination().toString() == dest3.toString() );
+            CPPUNIT_ASSERT( cinfo3->getMessageSelector() == sel3 );
+            
+            SessionInfo* info4 = manager.createSession( cms::Session::Transactional );
+            std::string sel4 = "";
+            StompTopic dest4( "dummy.queue.2" );
+            ConsumerInfo* cinfo4 = manager.createConsumer( &dest4, info4, sel4 );
+            CPPUNIT_ASSERT( cinfo4->getSessionInfo() == info4 );
+            CPPUNIT_ASSERT( cinfo4->getDestination().toString() == dest4.toString() );
+            CPPUNIT_ASSERT( cinfo4->getMessageSelector() == sel4 );
+            
+            delete info1;
+            delete info2;
+            delete info3;
+            delete info4;
+            
+            delete cinfo1;
+            delete cinfo2;
+            delete cinfo3;
+            delete cinfo4;
+        }
+        
+        void testCommand()
+        {
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testSessionId");
+            transport::DummyTransport transport( &responseBuilder );
+            StompSessionManager manager( connectionId, &transport );
+            
+            StompTopic dest1( "dummy.topic" );
+            StompTopic dest2( "dummy.topic2" );
+            
+            SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge );
+            ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, "" );
+            
+            SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge );
+            ConsumerInfo* cinfo2 = manager.createConsumer( &dest1, info2, "" );
+            
+            SessionInfo* info3 = manager.createSession( cms::Session::ClientAcknowledge );
+            ConsumerInfo* cinfo3 = manager.createConsumer( &dest2, info3, "" );
+            
+            SessionInfo* info4 = manager.createSession( cms::Session::Transactional );
+            ConsumerInfo* cinfo4 = manager.createConsumer( &dest2, info4, "" );
+            
+            MyMessageListener listener;
+            manager.setConsumerMessageListener( &listener );
+            
+            commands::TextMessageCommand* msg = new commands::TextMessageCommand();
+            msg->setCMSDestination( dest1 );
+            msg->setText( "hello world" );                        
+            manager.onStompCommand( msg );
+            
+            CPPUNIT_ASSERT( listener.consumers.size() == 2 );
+            for( unsigned int ix=0; ix<listener.consumers.size(); ++ix ){
+                CPPUNIT_ASSERT( listener.consumers[ix] == cinfo1 || 
+                    listener.consumers[ix] == cinfo2 );
+            }
+            
+            // Clean up the consumers list
+            listener.consumers.clear();
+            
+            msg = new commands::TextMessageCommand();
+            msg->setCMSDestination( dest2 );
+            msg->setText( "hello world" );
+            manager.onStompCommand( msg );
+            
+            CPPUNIT_ASSERT( listener.consumers.size() == 2 );
+            for( unsigned int ix=0; ix<listener.consumers.size(); ++ix ){
+                CPPUNIT_ASSERT( listener.consumers[ix] == cinfo3 || 
+                    listener.consumers[ix] == cinfo4 );
+            }
+                        
+            delete info1;
+            delete info2;
+            delete info3;
+            delete info4;
+            
+            delete cinfo1;
+            delete cinfo2;
+            delete cinfo3;
+            delete cinfo4;
+        }
+        
+        void testSendingCommands(){
+            
+            
+            
+            std::string connectionId = "testConnectionId";
+            StompResponseBuilder responseBuilder("testSessionId");
+            transport::DummyTransport transport( &responseBuilder );
+            StompSessionManager manager( connectionId, &transport );
+            
+            StompTopic dest1( "dummy.topic.1" );
+            
+            MyCommandListener cmdListener;
+            transport.setOutgoingCommandListener( &cmdListener );
+            
+            SessionInfo* info1 = manager.createSession( cms::Session::AutoAcknowledge );
+            ConsumerInfo* cinfo1 = manager.createConsumer( &dest1, info1, "" );                    
+            CPPUNIT_ASSERT( cmdListener.cmd != NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            SessionInfo* info2 = manager.createSession( cms::Session::DupsOkAcknowledge );
+            ConsumerInfo* cinfo2 = manager.createConsumer( &dest1, info2, "" );
+            CPPUNIT_ASSERT( cmdListener.cmd == NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            manager.removeConsumer( cinfo1 );
+            CPPUNIT_ASSERT( cmdListener.cmd == NULL );
+            
+            cmdListener.cmd = NULL;
+            
+            manager.removeConsumer( cinfo2 );
+            CPPUNIT_ASSERT( cmdListener.cmd != NULL );
+            
+            delete info1;
+            delete info2;
+            
+            delete cinfo1;
+            delete cinfo2;                      
+        }
+      
+    };
+
+}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_STOMPSESSIONMANAGERTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "AbortCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::AbortCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AbortCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ABORTCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ABORTCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/AbortCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class AbortCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( AbortCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+    	AbortCommandTest() {}
+    	virtual ~AbortCommandTest() {}
+
+        void test(void)
+        {
+            AbortCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::ABORT );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            AbortCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+        
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ABORTCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "AckCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::AckCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/AckCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,65 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ACKCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ACKCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/AckCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+            
+    class AckCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( AckCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+    	AckCommandTest() {}
+    	virtual ~AckCommandTest() {}
+
+        void test(void)
+        {
+            AckCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::ACK );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            CPPUNIT_ASSERT( cmd.getMessageId() == NULL );
+            cmd.setMessageId( "ID:123456789" );
+            CPPUNIT_ASSERT( std::string( cmd.getMessageId() ) == "ID:123456789" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            AckCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getMessageId()) == cmd1.getMessageId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ACKCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "BeginCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::BeginCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BeginCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BEGINCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BEGINCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/BeginCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class BeginCommandTest: public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( BeginCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+        
+    public:
+
+    	BeginCommandTest() {}
+    	virtual ~BeginCommandTest() {}
+
+        void test(void)
+        {
+            BeginCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::BEGIN );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            BeginCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BEGINCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "BytesMessageCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::BytesMessageCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/BytesMessageCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,188 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BYTESMESSAGECOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BYTESMESSAGECOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include <activemq/connector/stomp/StompTopic.h>
+#include <cms/Message.h>
+
+#include <activemq/connector/stomp/commands/BytesMessageCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class BytesMessageCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( BytesMessageCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    protected:
+
+        class TestAckHandler : public core::ActiveMQAckHandler
+        {
+        public:
+        
+            TestAckHandler(void) { wasAcked = false; }
+            virtual ~TestAckHandler(void) {}
+            
+            virtual void acknowledgeMessage( const core::ActiveMQMessage* message)
+                throw ( cms::CMSException ) 
+            {
+                wasAcked = true;
+            }
+            
+        public:
+        
+            bool wasAcked;
+
+        };
+
+    public:
+
+    	BytesMessageCommandTest() {}
+    	virtual ~BytesMessageCommandTest() {}
+
+        void test(void)
+        {
+            TestAckHandler ackHandler;
+            BytesMessageCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::SEND );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            StompTopic topic("testTopic");
+            cmd.setCMSDestination( topic );
+            CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == 
+                            "testTopic" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            BytesMessageCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+            cmd.setAckHandler( &ackHandler );
+            cmd.acknowledge();
+            CPPUNIT_ASSERT( ackHandler.wasAcked == true );
+            
+            CPPUNIT_ASSERT( 
+                cmd.getProperties().hasProperty( "test" ) == false );
+            cmd.getProperties().setProperty( "test", "value" );
+            CPPUNIT_ASSERT( 
+                cmd.getProperties().hasProperty( "test" ) == true );
+            CPPUNIT_ASSERT( 
+                std::string( cmd.getProperties().getProperty( "test" ) ) == "value" );
+                
+            CPPUNIT_ASSERT( cmd.getCMSCorrelationId() == NULL );
+            cmd.setCMSCorrelationId( "ID:1234567" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationId() ) == 
+                            "ID:1234567" );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+                            cms::Message::PERSISTANT );
+            cmd.setCMSDeliveryMode( cms::Message::NONPERSISTANT );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+                            cms::Message::NONPERSISTANT );
+            cmd.setCMSDestination( topic );
+            CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == 
+                            "testTopic" );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 );
+            cmd.setCMSExpiration( 123 );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == 123 );
+            CPPUNIT_ASSERT( cmd.getCMSMessageId() == NULL );
+            cmd.setCMSMessageId( "ID:1234567" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageId() ) == 
+                            "ID:1234567" );
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == 0 );
+            cmd.setCMSPriority( 5 );
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == 5 );
+            CPPUNIT_ASSERT( cmd.getCMSRedelivered() == false );
+            cmd.setCMSRedelivered( true );
+            CPPUNIT_ASSERT( cmd.getCMSRedelivered() == true );
+            CPPUNIT_ASSERT( cmd.getCMSReplyTo() == NULL );
+            cmd.setCMSReplyTo( "topic" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSReplyTo() ) == 
+                            "topic" );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == 0 );
+            cmd.setCMSTimeStamp( 123 );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == 123 );
+            CPPUNIT_ASSERT( cmd.getCMSMessageType() == NULL );
+            cmd.setCMSMessageType( "test" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageType() ) == 
+                            "test" );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 0 );
+            cmd.setRedeliveryCount( 123 );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 123 );
+            
+            const char* bodyBytes = "TESTBODYBYTES\0";
+            CPPUNIT_ASSERT( cmd.getBodyLength() == 0 );
+            cmd.setBodyBytes( (const unsigned char*)bodyBytes, 
+                              strlen( bodyBytes ) + 1 );
+            CPPUNIT_ASSERT( cmd.getBodyLength() == 
+                            (unsigned int)strlen( bodyBytes ) + 1 );
+            CPPUNIT_ASSERT( std::string( (const char*)cmd.getBodyBytes() ) == 
+                            bodyBytes );
+
+            cms::Message* cmd2 = cmd.clone();
+            
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == cmd2->getCMSPriority() );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == cmd2->getCMSTimeStamp() );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == cmd2->getCMSExpiration() );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == cmd2->getCMSDeliveryMode() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSCorrelationId()) == cmd2->getCMSCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSReplyTo()) == cmd2->getCMSReplyTo() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSMessageType()) == cmd2->getCMSMessageType() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSMessageId()) == cmd2->getCMSMessageId() );
+
+            core::ActiveMQMessage* message = 
+                dynamic_cast< core::ActiveMQMessage* >( cmd2 );
+                
+            CPPUNIT_ASSERT( message != NULL );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 
+                            message->getRedeliveryCount() );
+            
+            StompCommand* cmd4 = 
+                dynamic_cast< StompCommand* >( cmd2 );
+
+            CPPUNIT_ASSERT( cmd4 != NULL );
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd4->getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd4->getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd4->isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd4->getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == 
+                            cmd4->getTransactionId() );
+
+            BytesMessageCommand* cmd5 = 
+                dynamic_cast< BytesMessageCommand* >( cmd2 );
+
+            CPPUNIT_ASSERT( cmd5 != NULL );
+            CPPUNIT_ASSERT( std::string( (const char*)cmd.getBodyBytes() ) == 
+                            (const char*)cmd5->getBodyBytes() );
+
+            delete cmd2;
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_BYTESMESSAGECOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "CommandConstantsTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::CommandConstantsTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommandConstantsTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,81 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_COMMANDCONSTANTSTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_COMMANDCONSTANTSTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/CommandConstants.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class CommandConstantsTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( CommandConstantsTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+    	CommandConstantsTest() {}
+    	virtual ~CommandConstantsTest() {}
+
+        void test(void)
+        {
+            int index = 0;
+            
+            for(; index < CommandConstants::NUM_COMMANDS; ++index )
+            {
+                CommandConstants::CommandId cmdId = 
+                    (CommandConstants::CommandId)index;
+                std::string cmd = CommandConstants::toString( cmdId );
+    
+                CPPUNIT_ASSERT( cmd != "");            
+                CPPUNIT_ASSERT( 
+                    cmdId == CommandConstants::toCommandId( cmd ) );
+            }
+            
+            CPPUNIT_ASSERT( index != 0 );
+            
+            index = 0;
+                                        
+            for(; index < CommandConstants::NUM_STOMP_HEADERS; ++index )
+            {
+                CommandConstants::StompHeader hdrId = 
+                    (CommandConstants::StompHeader)index;
+                std::string hdr = CommandConstants::toString( hdrId );
+    
+                CPPUNIT_ASSERT( hdr != "");            
+                CPPUNIT_ASSERT( 
+                    hdrId == CommandConstants::toStompHeader( hdr ) );
+            }
+
+            CPPUNIT_ASSERT( index != 0 );
+            
+            index = 0;
+                                        
+            for(; index < CommandConstants::NUM_ACK_MODES; ++index )
+            {
+                CommandConstants::AckMode ackMode = 
+                    (CommandConstants::AckMode)index;
+                std::string ackStr = CommandConstants::toString( ackMode );
+    
+                CPPUNIT_ASSERT( ackStr != "");            
+                CPPUNIT_ASSERT( 
+                    ackMode == CommandConstants::toAckMode( ackStr ) );
+            }
+
+            CPPUNIT_ASSERT( index != 0 );
+
+            CPPUNIT_ASSERT( CommandConstants::queuePrefix != NULL );
+            CPPUNIT_ASSERT( CommandConstants::topicPrefix != NULL );
+
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_COMMANDCONSTANTSTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "CommitCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::CommitCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/CommitCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef COMMITCOMMANDTEST_H_
+#define COMMITCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/CommitCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class CommitCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( CommitCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+    	CommitCommandTest() {}
+    	virtual ~CommitCommandTest() {}
+
+        void test(void)
+        {
+            CommitCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::COMMIT );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            CommitCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*COMMITCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "ConnectCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::ConnectCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/ConnectCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class ConnectCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( ConnectCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    public:
+
+    	ConnectCommandTest() {}
+    	virtual ~ConnectCommandTest() {}
+
+        void test(void)
+        {
+            ConnectCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::CONNECT );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            ConnectCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "ConnectedCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::ConnectedCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ConnectedCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTEDCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTEDCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/ConnectedCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class ConnectedCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( ConnectedCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+        
+    public:
+
+    	ConnectedCommandTest() {}
+    	virtual ~ConnectedCommandTest() {}
+
+        void test(void)
+        {
+            ConnectedCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::CONNECTED );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            ConnectedCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_CONNECTEDCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "DisconnectCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::DisconnectCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/DisconnectCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,62 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_DISCONNECTCOMMANDTEXT_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_DISCONNECTCOMMANDTEXT_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/DisconnectCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class DisconnectCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( DisconnectCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+        
+    public:
+
+    	DisconnectCommandTest() {}
+    	virtual ~DisconnectCommandTest() {}
+
+        void test(void)
+        {
+            DisconnectCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::DISCONNECT );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            DisconnectCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_DISCONNECTCOMMANDTEXT_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "ErrorCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::ErrorCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ErrorCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,70 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ERRORCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ERRORCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/ErrorCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class ErrorCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( ErrorCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+        
+    public:
+
+    	ErrorCommandTest() {}
+    	virtual ~ErrorCommandTest() {}
+
+        void test(void)
+        {
+            ErrorCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::ERROR_CMD );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            CPPUNIT_ASSERT( cmd.getErrorMessage() == NULL );
+            cmd.setErrorMessage( "Error" );
+            CPPUNIT_ASSERT( std::string( cmd.getErrorMessage() ) == "Error" );
+            CPPUNIT_ASSERT( cmd.getErrorDetails() == NULL );
+            cmd.setErrorDetails( "ErrorD" );
+            CPPUNIT_ASSERT( std::string( cmd.getErrorDetails() ) == "ErrorD" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            ErrorCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            CPPUNIT_ASSERT( std::string(cmd.getErrorMessage()) == cmd1.getErrorMessage() );
+            CPPUNIT_ASSERT( std::string(cmd.getErrorDetails()) == cmd1.getErrorDetails() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_ERRORCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "MessageCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::MessageCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/MessageCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,171 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_MESSAGECOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_MESSAGECOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/MessageCommand.h>
+#include <activemq/core/ActiveMQAckHandler.h>
+#include <activemq/connector/stomp/StompTopic.h>
+#include <cms/Message.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class MessageCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( MessageCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+
+    protected:
+    
+        class TestAckHandler : public core::ActiveMQAckHandler
+        {
+        public:
+        
+            TestAckHandler(void) { wasAcked = false; }
+            virtual ~TestAckHandler(void) {}
+            
+            virtual void acknowledgeMessage( const core::ActiveMQMessage* message)
+                throw ( cms::CMSException ) 
+            {
+                wasAcked = true;
+            }
+            
+        public:
+        
+            bool wasAcked;
+
+        };
+    
+    public:
+
+    	MessageCommandTest() {}
+    	virtual ~MessageCommandTest() {}
+
+        void test(void)
+        {
+            TestAckHandler ackHandler;
+            MessageCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::SEND );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            StompTopic topic("testTopic");
+            cmd.setCMSDestination( topic );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            MessageCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == CommandConstants::SEND );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == cmd1.getTransactionId() );
+            
+            cmd.setAckHandler( &ackHandler );
+            cmd.acknowledge();
+            CPPUNIT_ASSERT( ackHandler.wasAcked == true );
+            
+            CPPUNIT_ASSERT( 
+                cmd.getProperties().hasProperty( "test" ) == false );
+            cmd.getProperties().setProperty( "test", "value" );
+            CPPUNIT_ASSERT( 
+                cmd.getProperties().hasProperty( "test" ) == true );
+            CPPUNIT_ASSERT( 
+                std::string( cmd.getProperties().getProperty( "test" ) ) == 
+                "value" );
+                
+            CPPUNIT_ASSERT( cmd.getCMSCorrelationId() == NULL );
+            cmd.setCMSCorrelationId( "ID:1234567" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSCorrelationId() ) == 
+                            "ID:1234567" );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+                            cms::Message::PERSISTANT );
+            cmd.setCMSDeliveryMode( cms::Message::NONPERSISTANT );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == 
+                            cms::Message::NONPERSISTANT );
+            CPPUNIT_ASSERT( cmd.getCMSDestination().toString() == 
+                            "testTopic" );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == 0 );
+            cmd.setCMSExpiration( 123 );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == 123 );
+            CPPUNIT_ASSERT( cmd.getCMSMessageId() == NULL );
+            cmd.setCMSMessageId( "ID:1234567" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageId() ) == 
+                            "ID:1234567" );
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == 0 );
+            cmd.setCMSPriority( 5 );
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == 5 );
+            CPPUNIT_ASSERT( cmd.getCMSRedelivered() == false );
+            cmd.setCMSRedelivered( true );
+            CPPUNIT_ASSERT( cmd.getCMSRedelivered() == true );
+            CPPUNIT_ASSERT( cmd.getCMSReplyTo() == NULL );
+            cmd.setCMSReplyTo( "topic" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSReplyTo() ) == 
+                            "topic" );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == 0 );
+            cmd.setCMSTimeStamp( 123 );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == 123 );
+            CPPUNIT_ASSERT( cmd.getCMSMessageType() == NULL );
+            cmd.setCMSMessageType( "test" );
+            CPPUNIT_ASSERT( std::string( cmd.getCMSMessageType() ) == 
+                            "test" );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 0 );
+            cmd.setRedeliveryCount( 123 );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 123 );
+
+            cms::Message* cmd2 = cmd.clone();
+            
+            CPPUNIT_ASSERT( cmd.getCMSPriority() == cmd2->getCMSPriority() );
+            CPPUNIT_ASSERT( cmd.getCMSTimeStamp() == cmd2->getCMSTimeStamp() );
+            CPPUNIT_ASSERT( cmd.getCMSExpiration() == cmd2->getCMSExpiration() );
+            CPPUNIT_ASSERT( cmd.getCMSDeliveryMode() == cmd2->getCMSDeliveryMode() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSCorrelationId()) == cmd2->getCMSCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSReplyTo()) == cmd2->getCMSReplyTo() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSMessageType()) == cmd2->getCMSMessageType() );
+            CPPUNIT_ASSERT( std::string(cmd.getCMSMessageId()) == cmd2->getCMSMessageId() );
+
+            core::ActiveMQMessage* message = 
+                dynamic_cast< core::ActiveMQMessage* >( cmd2 );
+                
+            CPPUNIT_ASSERT( message != NULL );
+            CPPUNIT_ASSERT( cmd.getRedeliveryCount() == 
+                            message->getRedeliveryCount() );
+            
+            StompCommand* cmd4 = 
+                dynamic_cast< StompCommand* >( cmd2 );
+
+            CPPUNIT_ASSERT( cmd4 != NULL );
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd4->getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd4->getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd4->isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd4->getCorrelationId() );
+            CPPUNIT_ASSERT( std::string(cmd.getTransactionId()) == 
+                            cmd4->getTransactionId() );
+
+            delete cmd2;
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMANDS_MESSAGECOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "ReceiptCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::ReceiptCommandTest );

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.h
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.h?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.h (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/ReceiptCommandTest.h Mon Jul  3 04:51:36 2006
@@ -0,0 +1,69 @@
+#ifndef _ACTIVEMQ_CONNECTOR_STOMP_COMMAND_RECEIPTCOMMANDTEST_H_
+#define _ACTIVEMQ_CONNECTOR_STOMP_COMMAND_RECEIPTCOMMANDTEST_H_
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <activemq/connector/stomp/commands/ReceiptCommand.h>
+
+namespace activemq{
+namespace connector{
+namespace stomp{
+namespace commands{
+
+    class ReceiptCommandTest : public CppUnit::TestFixture
+    {
+        CPPUNIT_TEST_SUITE( ReceiptCommandTest );
+        CPPUNIT_TEST( test );
+        CPPUNIT_TEST_SUITE_END();
+        
+    public:
+
+    	ReceiptCommandTest() {}
+    	virtual ~ReceiptCommandTest() {}
+
+        void test(void)
+        {
+            ReceiptCommand cmd;
+
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == 
+                            CommandConstants::RECEIPT );
+            
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == false );
+            cmd.setResponseRequired( true );
+            cmd.setCommandId( 123 );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == true );
+            CPPUNIT_ASSERT( cmd.getCommandId() == 123 );
+            cmd.setCorrelationId( 99 );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == 99 );
+            CPPUNIT_ASSERT( cmd.getTransactionId() == NULL );
+            cmd.setTransactionId( "ID:123456" );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            "ID:123456" );
+            CPPUNIT_ASSERT( cmd.getReceiptId() == NULL );
+            cmd.setReceiptId( "456987" );
+            CPPUNIT_ASSERT( std::string( cmd.getReceiptId() ) == 
+                            "456987" );
+            
+            StompFrame* frame = cmd.marshal().clone();
+            
+            CPPUNIT_ASSERT( frame != NULL );
+            
+            ReceiptCommand cmd1( frame );
+            
+            CPPUNIT_ASSERT( cmd.getCommandId() == cmd1.getCommandId() );
+            CPPUNIT_ASSERT( cmd.getStompCommandId() == cmd1.getStompCommandId() );
+            CPPUNIT_ASSERT( cmd.isResponseRequired() == cmd1.isResponseRequired() );
+            CPPUNIT_ASSERT( cmd.getCorrelationId() == cmd1.getCorrelationId() );
+            CPPUNIT_ASSERT( std::string( cmd.getTransactionId() ) == 
+                            cmd1.getTransactionId() );
+            CPPUNIT_ASSERT( std::string( cmd.getReceiptId() ) == 
+                            cmd1.getReceiptId() );
+            
+        }
+
+    };
+
+}}}}
+
+#endif /*_ACTIVEMQ_CONNECTOR_STOMP_COMMAND_RECEIPTCOMMANDTEST_H_*/

Added: incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.cpp?rev=418749&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.cpp (added)
+++ incubator/activemq/trunk/activemq-cpp/src/test/activemq/connector/stomp/commands/SubscribeCommandTest.cpp Mon Jul  3 04:51:36 2006
@@ -0,0 +1,3 @@
+#include "SubscribeCommandTest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( activemq::connector::stomp::commands::SubscribeCommandTest );