1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.tcp.protocols;
12
13 import org.mule.tck.AbstractMuleTestCase;
14
15 import java.io.ByteArrayInputStream;
16 import java.io.IOException;
17 import java.io.InputStream;
18
19
20
21
22 public class XmlMessageProtocolTestCase extends AbstractMuleTestCase
23 {
24 private XmlMessageProtocol xmp;
25
26 protected void setProtocol(XmlMessageProtocol xmp)
27 {
28 this.xmp = xmp;
29 }
30
31 protected byte[] read(InputStream is) throws IOException
32 {
33 return(byte[]) xmp.read(is);
34 }
35
36 protected void doSetUp() throws Exception
37 {
38 setProtocol(new XmlMessageProtocol());
39 }
40
41 protected void doTearDown() throws Exception
42 {
43 xmp = null;
44 }
45
46 public void testSingleMessage() throws Exception
47 {
48 String msgData = "<?xml version=\"1.0\"?><data>hello</data>";
49
50 ByteArrayInputStream bais = new ByteArrayInputStream(msgData.getBytes());
51
52 byte[] result = read(bais);
53 assertNotNull(result);
54 assertEquals(msgData, new String(result));
55
56 assertNull(read(bais));
57 }
58
59 public void testTwoMessages() throws Exception
60 {
61 String[] msgData = {"<?xml version=\"1.0\"?><data>hello</data>",
62 "<?xml version=\"1.0\"?><data>goodbye</data>"};
63
64 ByteArrayInputStream bais = new ByteArrayInputStream((msgData[0] + msgData[1]).getBytes());
65
66 byte[] result = read(bais);
67 assertNotNull(result);
68 assertEquals(msgData[0], new String(result));
69
70 result = read(bais);
71 assertNotNull(result);
72 assertEquals(msgData[1], new String(result));
73
74 assertNull(read(bais));
75 }
76
77 public void testMultipleMessages() throws Exception
78 {
79 String[] msgData = {"<?xml version=\"1.0\"?><data>1</data>",
80 "<?xml version=\"1.0\"?><data>22</data>", "<?xml version=\"1.0\"?><data>333</data>",
81 "<?xml version=\"1.0\"?><data>4444</data>",
82 "<?xml version=\"1.0\"?><data>55555</data>",
83 "<?xml version=\"1.0\"?><data>666666</data>",
84 "<?xml version=\"1.0\"?><data>7777777</data>",
85 "<?xml version=\"1.0\"?><data>88888888</data>",
86 "<?xml version=\"1.0\"?><data>999999999</data>",
87 "<?xml version=\"1.0\"?><data>aaaaaaaaaa</data>",
88 "<?xml version=\"1.0\"?><data>bbbbbbbbbbb</data>",
89 "<?xml version=\"1.0\"?><data>cccccccccccc</data>",
90 "<?xml version=\"1.0\"?><data>ddddddddddddd</data>",
91 "<?xml version=\"1.0\"?><data>eeeeeeeeeeeeee</data>",
92 "<?xml version=\"1.0\"?><data>fffffffffffffff</data>"};
93
94 StringBuffer allMsgData = new StringBuffer();
95
96 for (int i = 0; i < msgData.length; i++)
97 {
98 allMsgData.append(msgData[i]);
99 }
100
101 ByteArrayInputStream bais = new ByteArrayInputStream(allMsgData.toString().getBytes());
102
103 byte[] result;
104
105 for (int i = 0; i < msgData.length; i++)
106 {
107 result = read(bais);
108 assertNotNull(result);
109 assertEquals(msgData[i], new String(result));
110 }
111
112 assertNull(read(bais));
113 }
114
115 public void testSlowStream() throws Exception
116 {
117 String msgData = "<?xml version=\"1.0\"?><data>hello</data>";
118
119 SlowInputStream bais = new SlowInputStream(msgData.getBytes());
120
121 byte[] result = read(bais);
122 assertNotNull(result);
123
124 assertEquals(msgData.substring(0, 1), new String(result));
125 }
126
127 }