package org.skyscreamer.nevado.jms.message;
import junit.framework.Assert;
import org.junit.Test;
import org.skyscreamer.nevado.jms.AbstractJMSTest;
import javax.jms.JMSException;
import javax.jms.MessageNotWriteableException;
import javax.jms.TextMessage;
/**
* Test for section 3.10, 3.11.1, and 3.11.2 of the JMS 1.1 Specification.
*
* @author Carter Page <carter@skyscreamer.org>
*/
public class ReceivedMessageTest extends AbstractJMSTest {
@Test
public void testInitialState() throws JMSException {
TextMessage msg = createSession().createTextMessage();
msg.setStringProperty("a", "b");
msg.setText("test");
msg.setJMSCorrelationID("X");
TextMessage msgOut = (TextMessage)sendAndReceive(msg);
Assert.assertEquals("b", msgOut.getStringProperty("a"));
Assert.assertEquals("test", msgOut.getText());
Assert.assertEquals("X", msgOut.getJMSCorrelationID());
// Test setting header
msgOut.setJMSCorrelationID("Y");
Assert.assertEquals("Y", msgOut.getJMSCorrelationID());
// Test setting property
try {
msgOut.setStringProperty("c", "d");
Assert.fail("Should have thrown exception on property write");
}
catch (MessageNotWriteableException e) {
// Expected
}
msgOut.clearProperties();
msgOut.setStringProperty("c", "d");
Assert.assertEquals("d", msgOut.getStringProperty("c"));
// Test setting body
try {
msgOut.setText("something else");
Assert.fail("Should have thrown exception on body write");
}
catch (MessageNotWriteableException e) {
// Expected
}
msgOut.clearBody();
msgOut.setText("new text");
Assert.assertEquals("new text", msgOut.getText());
}
@Test
public void testClearBodyDoesNotClearProperties() throws JMSException {
TextMessage msg = createSession().createTextMessage();
msg.setStringProperty("a", "b");
msg.setText("test");
TextMessage msgOut = (TextMessage)sendAndReceive(msg);
msgOut.clearBody();
Assert.assertEquals("b", msgOut.getStringProperty("a"));
}
}