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 2007/10/26 21:04:42 UTC

svn commit: r588751 - in /activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal: BaseDataStreamMarshallerTest.cpp BaseDataStreamMarshallerTest.h

Author: tabish
Date: Fri Oct 26 12:04:41 2007
New Revision: 588751

URL: http://svn.apache.org/viewvc?rev=588751&view=rev
Log:
https://issues.apache.org/activemq/browse/AMQCPP-150

Submitting a test case that exposes the problem.

Modified:
    activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.cpp
    activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.h

Modified: activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.cpp
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.cpp?rev=588751&r1=588750&r2=588751&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.cpp (original)
+++ activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.cpp Fri Oct 26 12:04:41 2007
@@ -71,6 +71,11 @@
     CPPUNIT_ASSERT( ds.cachedChild->charValue == dataStructure->cachedChild->charValue );
     CPPUNIT_ASSERT( ds.cachedChild->shortValue == dataStructure->cachedChild->shortValue );
     CPPUNIT_ASSERT( ds.cachedChild->intValue == dataStructure->cachedChild->intValue );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue1 == dataStructure->cachedChild->longValue1 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue2 == dataStructure->cachedChild->longValue2 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue3 == dataStructure->cachedChild->longValue3 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue4 == dataStructure->cachedChild->longValue4 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue5 == dataStructure->cachedChild->longValue5 );
     CPPUNIT_ASSERT( ds.cachedChild->floatValue == dataStructure->cachedChild->floatValue );
     CPPUNIT_ASSERT( ds.cachedChild->doubleValue == dataStructure->cachedChild->doubleValue );
     CPPUNIT_ASSERT( ds.cachedChild->stringValue == dataStructure->cachedChild->stringValue );
@@ -119,6 +124,11 @@
     CPPUNIT_ASSERT( ds.cachedChild->charValue == dataStructure->cachedChild->charValue );
     CPPUNIT_ASSERT( ds.cachedChild->shortValue == dataStructure->cachedChild->shortValue );
     CPPUNIT_ASSERT( ds.cachedChild->intValue == dataStructure->cachedChild->intValue );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue1 == dataStructure->cachedChild->longValue1 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue2 == dataStructure->cachedChild->longValue2 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue3 == dataStructure->cachedChild->longValue3 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue4 == dataStructure->cachedChild->longValue4 );
+    CPPUNIT_ASSERT( ds.cachedChild->longValue5 == dataStructure->cachedChild->longValue5 );
     CPPUNIT_ASSERT( ds.cachedChild->floatValue == dataStructure->cachedChild->floatValue );
     CPPUNIT_ASSERT( ds.cachedChild->doubleValue == dataStructure->cachedChild->doubleValue );
     CPPUNIT_ASSERT( ds.cachedChild->stringValue == dataStructure->cachedChild->stringValue );

Modified: activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.h
URL: http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.h?rev=588751&r1=588750&r2=588751&view=diff
==============================================================================
--- activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.h (original)
+++ activemq/activemq-cpp/trunk/src/test/activemq/connector/openwire/marshal/BaseDataStreamMarshallerTest.h Fri Oct 26 12:04:41 2007
@@ -28,39 +28,43 @@
 namespace connector{
 namespace openwire{
 namespace marshal{
-    
+
     class BaseDataStreamMarshallerTest : public CppUnit::TestFixture {
-        
+
         CPPUNIT_TEST_SUITE( BaseDataStreamMarshallerTest );
         CPPUNIT_TEST( testLooseMarshal );
         CPPUNIT_TEST( testTightMarshal );
-        CPPUNIT_TEST_SUITE_END();                 
-        
+        CPPUNIT_TEST_SUITE_END();
+
     public:
-    
+
         class SimpleDataStructure : public commands::BaseDataStructure {
-            
+
         public:
-        
+
             bool boolValue;
             char charValue;
             short shortValue;
             int intValue;
-            long long longValue;
+            long long longValue1;
+            long long longValue2;
+            long long longValue3;
+            long long longValue4;
+            long long longValue5;
             float floatValue;
             double doubleValue;
             std::string stringValue;
-                        
+
         public:
-        
+
             const static unsigned char TYPE = 0xFF;
-            
+
             virtual ~SimpleDataStructure(){}
-            
+
             virtual unsigned char getDataStructureType() const {
                 return TYPE;
             }
-            
+
             virtual DataStructure* cloneDataStructure() const {
                 SimpleDataStructure* s = new SimpleDataStructure();
                 s->copyDataStructure( this );
@@ -76,41 +80,49 @@
                 charValue = srcObj->charValue;
                 shortValue = srcObj->shortValue;
                 intValue = srcObj->intValue;
-                longValue = srcObj->longValue;
+                longValue1 = srcObj->longValue1;
+                longValue2 = srcObj->longValue2;
+                longValue3 = srcObj->longValue3;
+                longValue4 = srcObj->longValue4;
+                longValue5 = srcObj->longValue5;
                 floatValue = srcObj->floatValue;
                 doubleValue = srcObj->doubleValue;
                 stringValue = srcObj->stringValue;
             }
         };
-        
+
         class SimpleDataStructureMarshaller : public BaseDataStreamMarshaller{
         public:
-        
+
             virtual ~SimpleDataStructureMarshaller(){}
-         
+
             virtual commands::DataStructure* createObject() const {
                 return new SimpleDataStructure();
             }
-            
+
             virtual unsigned char getDataStructureType() const {
                 return SimpleDataStructure::TYPE;
             }
-            
+
             virtual void tightUnmarshal( OpenWireFormat* wireFormat,
                                      commands::DataStructure* dataStructure,
                                      io::DataInputStream* dataIn,
-                                     utils::BooleanStream* bs ) throw( io::IOException ) 
+                                     utils::BooleanStream* bs ) throw( io::IOException )
              {
                 BaseDataStreamMarshaller::tightUnmarshal( wireFormat, dataStructure, dataIn, bs );
 
                 SimpleDataStructure* info =
                     dynamic_cast<SimpleDataStructure*>( dataStructure );
-                    
+
                 info->boolValue = bs->readBoolean();
                 info->charValue = dataIn->readChar();
                 info->shortValue = dataIn->readShort();
                 info->intValue = dataIn->readInt();
-                info->longValue = tightUnmarshalLong( wireFormat, dataIn, bs );
+                info->longValue1 = tightUnmarshalLong( wireFormat, dataIn, bs );
+                info->longValue2 = tightUnmarshalLong( wireFormat, dataIn, bs );
+                info->longValue3 = tightUnmarshalLong( wireFormat, dataIn, bs );
+                info->longValue4 = tightUnmarshalLong( wireFormat, dataIn, bs );
+                info->longValue5 = tightUnmarshalLong( wireFormat, dataIn, bs );
                 info->floatValue = dataIn->readFloat();
                 info->doubleValue = dataIn->readDouble();
                 info->stringValue = tightUnmarshalString( dataIn, bs );
@@ -122,15 +134,19 @@
             {
                 SimpleDataStructure* info =
                     dynamic_cast<SimpleDataStructure*>( dataStructure );
-            
+
                 int rc = BaseDataStreamMarshaller::tightMarshal1( wireFormat, dataStructure, bs );
                 bs->writeBoolean( info->boolValue );
-                rc += tightMarshalLong1( wireFormat, info->longValue, bs );
+                rc += tightMarshalLong1( wireFormat, info->longValue1, bs );
+                rc += tightMarshalLong1( wireFormat, info->longValue2, bs );
+                rc += tightMarshalLong1( wireFormat, info->longValue3, bs );
+                rc += tightMarshalLong1( wireFormat, info->longValue4, bs );
+                rc += tightMarshalLong1( wireFormat, info->longValue5, bs );
                 rc += tightMarshalString1( info->stringValue, bs );
-            
+
                 return 19 + rc;
             }
-    
+
             virtual void tightMarshal2( OpenWireFormat* wireFormat,
                                         commands::DataStructure* dataStructure,
                                         io::DataOutputStream* dataOut,
@@ -140,18 +156,22 @@
 
                 SimpleDataStructure* info =
                     dynamic_cast<SimpleDataStructure*>( dataStructure );
-                    
+
                 bs->readBoolean();
                 dataOut->writeChar( info->charValue );
                 dataOut->writeShort( info->shortValue );
-                dataOut->writeInt( info->intValue );                
-                tightMarshalLong2(wireFormat, info->longValue, dataOut, bs);
+                dataOut->writeInt( info->intValue );
+                tightMarshalLong2(wireFormat, info->longValue1, dataOut, bs);
+                tightMarshalLong2(wireFormat, info->longValue2, dataOut, bs);
+                tightMarshalLong2(wireFormat, info->longValue3, dataOut, bs);
+                tightMarshalLong2(wireFormat, info->longValue4, dataOut, bs);
+                tightMarshalLong2(wireFormat, info->longValue5, dataOut, bs);
                 dataOut->writeFloat( info->floatValue );
                 dataOut->writeDouble( info->doubleValue );
                 tightMarshalString2( info->stringValue, dataOut, bs );
-                
+
             }
-    
+
             virtual void looseUnmarshal( OpenWireFormat* wireFormat,
                                          commands::DataStructure* dataStructure,
                                          io::DataInputStream* dataIn ) throw( io::IOException )
@@ -159,17 +179,21 @@
                 BaseDataStreamMarshaller::looseUnmarshal( wireFormat, dataStructure, dataIn );
                 SimpleDataStructure* info =
                     dynamic_cast<SimpleDataStructure*>( dataStructure );
-                    
+
                 info->boolValue = dataIn->readBoolean();
                 info->charValue = dataIn->readChar();
                 info->shortValue = dataIn->readShort();
                 info->intValue = dataIn->readInt();
-                info->longValue = looseUnmarshalLong( wireFormat, dataIn );
+                info->longValue1 = looseUnmarshalLong( wireFormat, dataIn );
+                info->longValue2 = looseUnmarshalLong( wireFormat, dataIn );
+                info->longValue3 = looseUnmarshalLong( wireFormat, dataIn );
+                info->longValue4 = looseUnmarshalLong( wireFormat, dataIn );
+                info->longValue5 = looseUnmarshalLong( wireFormat, dataIn );
                 info->floatValue = dataIn->readFloat();
                 info->doubleValue = dataIn->readDouble();
                 info->stringValue = looseUnmarshalString( dataIn );
             }
-    
+
             virtual void looseMarshal( OpenWireFormat* wireFormat,
                                        commands::DataStructure* dataStructure,
                                        io::DataOutputStream* dataOut ) throw( io::IOException )
@@ -177,51 +201,55 @@
                 SimpleDataStructure* info =
                     dynamic_cast<SimpleDataStructure*>( dataStructure );
                 BaseDataStreamMarshaller::looseMarshal( wireFormat, dataStructure, dataOut );
-    
+
                 dataOut->writeBoolean( info->boolValue );
                 dataOut->writeChar( info->charValue );
                 dataOut->writeShort( info->shortValue );
                 dataOut->writeInt( info->intValue );
-                looseMarshalLong( wireFormat, info->longValue, dataOut );
+                looseMarshalLong( wireFormat, info->longValue1, dataOut );
+                looseMarshalLong( wireFormat, info->longValue2, dataOut );
+                looseMarshalLong( wireFormat, info->longValue3, dataOut );
+                looseMarshalLong( wireFormat, info->longValue4, dataOut );
+                looseMarshalLong( wireFormat, info->longValue5, dataOut );
                 dataOut->writeFloat( info->floatValue );
                 dataOut->writeDouble( info->doubleValue );
                 looseMarshalString( info->stringValue, dataOut );
             }
         };
-        
+
         class ComplexDataStructure : public commands::BaseDataStructure {
-            
+
         public:
-        
+
             bool boolValue;
             SimpleDataStructure* cachedChild;
-                        
+
         public:
-        
+
             const static unsigned char TYPE = 0xFE;
-            
+
             ComplexDataStructure(){
                 cachedChild = NULL;
             }
             virtual ~ComplexDataStructure(){
                 setCachedChild( NULL );
             }
-            
+
             void setCachedChild( SimpleDataStructure* child ) {
                 if( cachedChild != NULL ) {
                     delete cachedChild;
                     cachedChild = NULL;
                 }
-                
+
                 if( child != NULL ) {
                     cachedChild = child;
                 }
             }
-            
+
             virtual unsigned char getDataStructureType() const {
                 return TYPE;
             }
-            
+
             virtual DataStructure* cloneDataStructure() const {
                 ComplexDataStructure* s = new ComplexDataStructure();
                 s->copyDataStructure( this );
@@ -234,41 +262,41 @@
                     return;
                 }
                 boolValue = srcObj->boolValue;
-                
+
                 if( cachedChild != NULL ) {
                     delete cachedChild;
                     cachedChild = NULL;
                 }
-                
+
                 if( srcObj->cachedChild != NULL ) {
                     cachedChild = dynamic_cast<SimpleDataStructure*>(srcObj->cachedChild->cloneDataStructure());
-                }             
+                }
             }
         };
-        
+
         class ComplexDataStructureMarshaller : public BaseDataStreamMarshaller{
         public:
-        
+
             virtual ~ComplexDataStructureMarshaller(){}
-         
+
             virtual commands::DataStructure* createObject() const {
                 return new ComplexDataStructure();
             }
-            
+
             virtual unsigned char getDataStructureType() const {
                 return ComplexDataStructure::TYPE;
             }
-            
+
             virtual void tightUnmarshal( OpenWireFormat* wireFormat,
                                      commands::DataStructure* dataStructure,
                                      io::DataInputStream* dataIn,
-                                     utils::BooleanStream* bs ) throw( io::IOException ) 
+                                     utils::BooleanStream* bs ) throw( io::IOException )
              {
                 BaseDataStreamMarshaller::tightUnmarshal( wireFormat, dataStructure, dataIn, bs );
 
                 ComplexDataStructure* info =
                     dynamic_cast<ComplexDataStructure*>( dataStructure );
-                    
+
                 info->boolValue = bs->readBoolean();
                 info->setCachedChild( dynamic_cast< SimpleDataStructure* >(
                     tightUnmarshalCachedObject( wireFormat, dataIn, bs ) ) );
@@ -280,14 +308,14 @@
             {
                 ComplexDataStructure* info =
                     dynamic_cast<ComplexDataStructure*>( dataStructure );
-            
+
                 int rc = BaseDataStreamMarshaller::tightMarshal1( wireFormat, dataStructure, bs );
                 bs->writeBoolean( info->boolValue );
                 rc += tightMarshalCachedObject1( wireFormat, info->cachedChild, bs );
-            
+
                 return rc;
             }
-    
+
             virtual void tightMarshal2( OpenWireFormat* wireFormat,
                                         commands::DataStructure* dataStructure,
                                         io::DataOutputStream* dataOut,
@@ -297,12 +325,12 @@
 
                 ComplexDataStructure* info =
                     dynamic_cast<ComplexDataStructure*>( dataStructure );
-                    
+
                 bs->readBoolean();
                 tightMarshalCachedObject2( wireFormat, info->cachedChild, dataOut, bs );
-                
+
             }
-    
+
             virtual void looseUnmarshal( OpenWireFormat* wireFormat,
                                          commands::DataStructure* dataStructure,
                                          io::DataInputStream* dataIn ) throw( io::IOException )
@@ -310,12 +338,12 @@
                 BaseDataStreamMarshaller::looseUnmarshal( wireFormat, dataStructure, dataIn );
                 ComplexDataStructure* info =
                     dynamic_cast<ComplexDataStructure*>( dataStructure );
-                    
+
                 info->boolValue = dataIn->readBoolean();
-                info->setCachedChild( dynamic_cast< SimpleDataStructure* >( 
+                info->setCachedChild( dynamic_cast< SimpleDataStructure* >(
                     looseUnmarshalCachedObject( wireFormat, dataIn ) ) );
             }
-    
+
             virtual void looseMarshal( OpenWireFormat* wireFormat,
                                        commands::DataStructure* dataStructure,
                                        io::DataOutputStream* dataOut ) throw( io::IOException )
@@ -323,21 +351,21 @@
                 ComplexDataStructure* info =
                     dynamic_cast<ComplexDataStructure*>( dataStructure );
                 BaseDataStreamMarshaller::looseMarshal( wireFormat, dataStructure, dataOut );
-    
+
                 dataOut->writeBoolean( info->boolValue );
                 looseMarshalCachedObject( wireFormat, info->cachedChild, dataOut );
             }
         };
-        
+
     private:
-    
+
         ComplexDataStructure* dataStructure;
 
     public:
-    
+
         BaseDataStreamMarshallerTest() {}
         virtual ~BaseDataStreamMarshallerTest() {}
-        
+
         virtual void setUp(){
             dataStructure = new ComplexDataStructure();
             dataStructure->boolValue = true;
@@ -346,23 +374,27 @@
             dataStructure->cachedChild->charValue = 'a';
             dataStructure->cachedChild->shortValue = 1000;
             dataStructure->cachedChild->intValue = 100000;
-            dataStructure->cachedChild->longValue = 1000000;
+            dataStructure->cachedChild->longValue1 = 1000000;
+            dataStructure->cachedChild->longValue2 = 256;
+            dataStructure->cachedChild->longValue3 = 65536;
+            dataStructure->cachedChild->longValue4 = 65535;
+            dataStructure->cachedChild->longValue5 = 32769;
             dataStructure->cachedChild->floatValue = 10.3f;
             dataStructure->cachedChild->doubleValue = 20.1;
             dataStructure->cachedChild->stringValue = "hello world";
-        } 
-        
+        }
+
         virtual void tearDown(){
-            
+
             if( dataStructure != NULL ) {
                 delete dataStructure;
                 dataStructure = NULL;
             }
         }
-    
+
         void testLooseMarshal();
         void testTightMarshal();
-        
+
     };
 
 }}}}