package org.objectweb.jtests.jms.conform.message.properties;
import org.objectweb.jtests.jms.framework.*;
import javax.jms.*;
import junit.framework.*;
import java.util.Vector;
import java.util.Enumeration;
public class MessagePropertyTest extends PTPTestCase {
public void testSetObjectProperty_2() {
try {
Message message = senderSession.createMessage();
message.setObjectProperty("prop", new Vector());
fail("§3.5.5 An attempt to use any other class [than Boolean, Byte,...,String] must throw " +
"a JMS MessageFormatException.\n");
} catch (MessageFormatException e) {
} catch (JMSException e) {
fail("Should throw a javax.jms.MessageFormatException, not a "+ e);
}
}
public void testSetObjectProperty_1() {
try {
Message message = senderSession.createMessage();
message.setObjectProperty("pi", new Float(3.14159f));
assertEquals(3.14159f, message.getFloatProperty("pi"),0);
} catch (JMSException e) {
fail(e);
}
}
public void testGetObjectProperty() {
try {
Message message = senderSession.createMessage();
assertEquals("§3.5.5 A null value is returned [by the getObjectProperty method] if a property by the specified " +
"name does not exits.\n",
null,message.getObjectProperty("prop"));
} catch (JMSException e) {
fail(e);
}
}
public void testGetStringProperty() {
try {
Message message = senderSession.createMessage();
assertEquals("§3.5.5 A null value is returned [by the getStringProperty method] if a property by the specified " +
"name does not exits.\n",
null,message.getStringProperty("prop"));
} catch (JMSException e) {
fail(e);
}
}
public void testGetDoubleProperty() {
try {
Message message = senderSession.createMessage();
message.getDoubleProperty("prop");
fail("Should raise a NullPointerException.\n");
} catch (NullPointerException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetFloatProperty() {
try {
Message message = senderSession.createMessage();
message.getFloatProperty("prop");
fail("Should raise a NullPointerException.\n");
} catch (NullPointerException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetLongProperty() {
try {
Message message = senderSession.createMessage();
message.getLongProperty("prop");
fail("Should raise a NumberFormatException.\n");
} catch (NumberFormatException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetIntProperty() {
try {
Message message = senderSession.createMessage();
message.getIntProperty("prop");
fail("Should raise a NumberFormatException.\n");
} catch (NumberFormatException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetShortProperty() {
try {
Message message = senderSession.createMessage();
message.getShortProperty("prop");
fail("Should raise a NumberFormatException.\n");
} catch (NumberFormatException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetByteProperty() {
try {
Message message = senderSession.createMessage();
message.getByteProperty("prop");
fail("Should raise a NumberFormatException.\n");
} catch (NumberFormatException e) {
} catch (JMSException e) {
fail(e);
}
}
public void testGetBooleanProperty() {
try {
Message message = senderSession.createMessage();
assertEquals(false, message.getBooleanProperty("prop"));
} catch (JMSException e) {
fail(e);
}
}
public void testGetPropertyNames() {
try {
Message message = senderSession.createMessage();
message.setJMSCorrelationID("foo");
Enumeration enum = message.getPropertyNames();
assertTrue("§3.5.6 The getPropertyNames method does not return the names of " +
"the JMS standard header field [e.g. JMSCorrelationID].\n",
!enum.hasMoreElements());
} catch (JMSException e) {
fail(e);
}
}
public void testPropertyIteration() {
try {
Message message = senderSession.createMessage();
Enumeration enum = message.getPropertyNames();
assertTrue("No property yet defined.\n",
!enum.hasMoreElements());
message.setDoubleProperty("pi", 3.14159);
enum = message.getPropertyNames();
assertEquals("One property defined of name 'pi'.\n",
"pi", (String)enum.nextElement());
} catch (JMSException e) {
fail(e);
}
}
public void testClearProperties_2() {
try {
TextMessage message = senderSession.createTextMessage();
message.setText("foo");
message.clearProperties();
assertEquals("§3.5.7 Clearing a message's property entries does not clear the value of its body.\n",
"foo", message.getText());
} catch (JMSException e) {
fail(e);
}
}
public void testClearProperties_1() {
try {
TextMessage message = senderSession.createTextMessage();
message.setStringProperty("prop", "foo");
message.clearProperties();
assertEquals("§3.5.7 A message's properties are deleted by the clearProperties method.\n",
null, message.getStringProperty("prop"));
} catch (JMSException e) {
fail(e);
}
}
public static Test suite() {
return new TestSuite(MessagePropertyTest.class);
}
public MessagePropertyTest(String name) {
super(name);
}
}