void ActiveMQMapMessageMarshallerTest::testTightMarshal() { ActiveMQMapMessageMarshaller marshaller; Properties props; OpenWireFormat openWireFormat( props ); // Configure for this test. openWireFormat.setVersion( 3 ); openWireFormat.setTightEncodingEnabled( true ); ActiveMQMapMessage outCommand; ActiveMQMapMessage inCommand; Pointer<ProducerId> producerId( new ProducerId() ); producerId->setConnectionId( "ConnectionId" ); producerId->setSessionId( 123 ); producerId->setValue( 42 ); Pointer<MessageId> messageId( new MessageId() ); messageId->setBrokerSequenceId( 1 ); messageId->setProducerSequenceId( 3 ); messageId->setProducerId( producerId ); outCommand.setMessageId( messageId ); try { // Marshal the dataStructure to a byte array. ByteArrayOutputStream baos; DataOutputStream dataOut( &baos ); // Phase 1 - count the size int size = 1; BooleanStream bs; size += marshaller.tightMarshal1( &openWireFormat, &outCommand, &bs ); size += bs.marshalledSize(); // Phase 2 - marshal dataOut.writeByte( outCommand.getDataStructureType() ); bs.marshal( &dataOut ); marshaller.tightMarshal2( &openWireFormat, &outCommand, &dataOut, &bs ); // Now read it back in and make sure it's all right. std::pair<const unsigned char*, int> array = baos.toByteArray(); ByteArrayInputStream bais( array.first, array.second, true ); DataInputStream dataIn( &bais ); unsigned char dataType = dataIn.readByte(); CPPUNIT_ASSERT( dataType == outCommand.getDataStructureType() ); bs.clear(); bs.unmarshal( &dataIn ); marshaller.tightUnmarshal( &openWireFormat, &inCommand, &dataIn, &bs ); CPPUNIT_ASSERT( inCommand.equals( &outCommand ) == true ); } catch( ActiveMQException& e ) { e.printStackTrace(); CPPUNIT_ASSERT( false ); } catch( ... ) { CPPUNIT_ASSERT( false ); } }
void ActiveMQMapMessageMarshallerTest::test() { ActiveMQMapMessageMarshaller myMarshaller; ActiveMQMapMessage myCommand; ActiveMQMapMessage* myCommand2; CPPUNIT_ASSERT( myMarshaller.getDataStructureType() == myCommand.getDataStructureType() ); myCommand2 = dynamic_cast<ActiveMQMapMessage*>( myMarshaller.createObject() ); CPPUNIT_ASSERT( myCommand2 != NULL ); delete myCommand2; }
void ActiveMQMapMessageTest::test() { ActiveMQMapMessage myMessage; CPPUNIT_ASSERT( myMessage.getDataStructureType() == ActiveMQMapMessage::ID_ACTIVEMQMAPMESSAGE ); CPPUNIT_ASSERT( myMessage.getMapNames().size() == 0 ); CPPUNIT_ASSERT( myMessage.itemExists( "Something" ) == false ); std::vector<unsigned char> data; data.push_back( 2 ); data.push_back( 4 ); data.push_back( 8 ); data.push_back( 16 ); data.push_back( 32 ); myMessage.setBoolean( "boolean", false ); myMessage.setByte( "byte", 127 ); myMessage.setChar( "char", 'a' ); myMessage.setShort( "short", 32000 ); myMessage.setInt( "int", 6789999 ); myMessage.setLong( "long", 0xFFFAAA33345LL ); myMessage.setFloat( "float", 0.000012f ); myMessage.setDouble( "double", 64.54654 ); myMessage.setBytes( "bytes", data ); CPPUNIT_ASSERT( myMessage.getBoolean( "boolean" ) == false ); CPPUNIT_ASSERT( myMessage.getByte( "byte" ) == 127 ); CPPUNIT_ASSERT( myMessage.getChar( "char" ) == 'a' ); CPPUNIT_ASSERT( myMessage.getShort( "short" ) == 32000 ); CPPUNIT_ASSERT( myMessage.getInt( "int" ) == 6789999 ); CPPUNIT_ASSERT( myMessage.getLong( "long" ) == 0xFFFAAA33345LL ); CPPUNIT_ASSERT( myMessage.getFloat( "float" ) == 0.000012f ); CPPUNIT_ASSERT( myMessage.getDouble( "double" ) == 64.54654 ); CPPUNIT_ASSERT( myMessage.getBytes( "bytes" ) == data ); }