blob: d4becf7d1a05434ffbd7495a70c5308323cc238a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ActiveMQTextMessageTest.h"
#include <activemq/commands/ActiveMQTextMessage.h>
using namespace cms;
using namespace std;
using namespace activemq;
using namespace activemq::util;
using namespace activemq::commands;
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::test() {
ActiveMQTextMessage myMessage;
CPPUNIT_ASSERT( myMessage.getDataStructureType() == ActiveMQTextMessage::ID_ACTIVEMQTEXTMESSAGE );
const char* testText = "This is some test Text";
myMessage.setText( testText );
CPPUNIT_ASSERT( myMessage.getText() == testText );
cms::TextMessage* clonedMessage = myMessage.clone();
CPPUNIT_ASSERT( clonedMessage != NULL );
CPPUNIT_ASSERT( clonedMessage->getText() == testText );
delete clonedMessage;
}
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::testShallowCopy() {
ActiveMQTextMessage msg;
std::string string1 = "str";
msg.setText( string1 );
ActiveMQTextMessage msg2;
msg2.copyDataStructure( &msg );
CPPUNIT_ASSERT( msg.getText() == msg2.getText() );
}
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::testGetBytes() {
ActiveMQTextMessage msg;
std::string str = "testText";
msg.setText( str );
msg.beforeMarshal( NULL );
ActiveMQTextMessage msg2;
msg2.setContent( msg.getContent() );
CPPUNIT_ASSERT( msg2.getText() == str );
}
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::testClearBody() {
ActiveMQTextMessage textMessage;
textMessage.setText( "string" );
textMessage.clearBody();
CPPUNIT_ASSERT( !textMessage.isReadOnlyBody() );
CPPUNIT_ASSERT( textMessage.getText() == "" );
try {
textMessage.setText( "String" );
textMessage.getText();
} catch( MessageNotWriteableException& mnwe ) {
CPPUNIT_FAIL( "should be writeable" );
} catch( MessageNotReadableException& mnre ) {
CPPUNIT_FAIL( "should be readable" );
}
}
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::testReadOnlyBody() {
ActiveMQTextMessage textMessage;
textMessage.setText( "test" );
textMessage.setReadOnlyBody( true );
try {
textMessage.getText();
} catch( MessageNotReadableException& e ) {
CPPUNIT_FAIL( "should be readable" );
}
try {
textMessage.setText( "test" );
CPPUNIT_FAIL( "should throw exception" );
} catch( MessageNotWriteableException& mnwe ) {
}
}
////////////////////////////////////////////////////////////////////////////////
void ActiveMQTextMessageTest::testWriteOnlyBody() {
ActiveMQTextMessage textMessage;
textMessage.setReadOnlyBody( false );
try {
textMessage.setText( "test" );
textMessage.getText();
} catch( MessageNotReadableException& e ) {
CPPUNIT_FAIL( "should be readable" );
}
textMessage.setReadOnlyBody( true );
try {
textMessage.getText();
textMessage.setText( "test" );
CPPUNIT_FAIL( "should throw exception" );
} catch( MessageNotReadableException& e ) {
CPPUNIT_FAIL( "should be readable" );
} catch( MessageNotWriteableException& mnwe ) {
}
}