package org.skyscreamer.nevado.jms.message;
import org.activemq.message.ActiveMQTextMessage;
import org.junit.Assert;
import org.junit.Test;
import org.skyscreamer.nevado.jms.AbstractJMSTest;
import org.skyscreamer.nevado.jms.util.RandomData;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import java.io.StringReader;
/**
* Created by IntelliJ IDEA.
* User: Carter Page
* Date: 3/22/12
* Time: 3:22 AM
*/
public class TextMessageTest extends AbstractJMSTest {
@Test
public void testTextMessage() throws JMSException {
TextMessage msg = createSession().createTextMessage();
testTextMessage(msg);
}
@Test
public void testAlienTextMessage() throws JMSException {
TextMessage msg = new ActiveMQTextMessage();
testTextMessage(msg);
}
private void testTextMessage(TextMessage msg) throws JMSException {
String text = "How much wood could a woodchuck chuck? " + RandomData.readInt() + " logs!";
msg.setText(text);
Message msgOut = sendAndReceive(msg);
Assert.assertTrue("Should be a text message", msgOut instanceof TextMessage);
Assert.assertEquals("Text should match", text, ((TextMessage)msgOut).getText());
}
@Test
public void testTextMessage2() throws JMSException {
String text = "How much wood could a woodchuck chuck? " + RandomData.readInt() + " logs!";
TextMessage msg = createSession().createTextMessage(text);
Message msgOut = sendAndReceive(msg);
Assert.assertTrue("Should be a text message", msgOut instanceof TextMessage);
Assert.assertEquals("Text should match", text, ((TextMessage)msgOut).getText());
}
@Test
public void testXmlMessage() throws Exception {
String text = "<samplexml><a><b><c x=\"y\">d</c></b></a></samplexml>";
TextMessage msg = createSession().createTextMessage(text);
Message msgOut = sendAndReceive(msg);
Assert.assertTrue("Should be a text message", msgOut instanceof TextMessage);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(((TextMessage)msgOut).getText()));
Document doc = builder.parse(is);
XPath xpath = XPathFactory.newInstance().newXPath();
Assert.assertEquals("d", xpath.evaluate("/samplexml/a/b/c", doc));
Assert.assertEquals("y", xpath.evaluate("/samplexml/a/b/c/@x", doc));
}
}