1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.filter.codec.serialization;
21
22 import static org.junit.Assert.assertEquals;
23
24 import java.io.ByteArrayOutputStream;
25
26 import org.apache.mina.core.buffer.IoBuffer;
27 import org.apache.mina.filter.codec.ProtocolCodecSession;
28 import org.apache.mina.filter.codec.ProtocolDecoder;
29 import org.apache.mina.filter.codec.ProtocolDecoderOutput;
30 import org.apache.mina.filter.codec.ProtocolEncoder;
31 import org.apache.mina.filter.codec.ProtocolEncoderOutput;
32 import org.junit.Test;
33
34
35
36
37
38
39 public class ObjectSerializationTest {
40 @Test
41 public void testEncoder() throws Exception {
42 final String expected = "1234";
43
44 ProtocolCodecSession session = new ProtocolCodecSession();
45 ProtocolEncoderOutput out = session.getEncoderOutput();
46
47 ProtocolEncoder encoder = new ObjectSerializationEncoder();
48 encoder.encode(session, expected, out);
49
50 assertEquals(1, session.getEncoderOutputQueue().size());
51 IoBuffer buf = (IoBuffer) session.getEncoderOutputQueue().poll();
52
53 testDecoderAndInputStream(expected, buf);
54 }
55
56 @Test
57 public void testOutputStream() throws Exception {
58 final String expected = "1234";
59
60 ByteArrayOutputStream baos = new ByteArrayOutputStream();
61 ObjectSerializationOutputStream osos = new ObjectSerializationOutputStream(baos);
62
63 osos.writeObject(expected);
64 osos.flush();
65
66 testDecoderAndInputStream(expected, IoBuffer.wrap(baos.toByteArray()));
67 osos.close();
68 }
69
70 private void testDecoderAndInputStream(String expected, IoBuffer in) throws Exception {
71
72 ObjectSerializationInputStream osis = new ObjectSerializationInputStream(in.duplicate().asInputStream());
73
74 Object actual = osis.readObject();
75 assertEquals(expected, actual);
76
77
78 ProtocolDecoder decoder = new ObjectSerializationDecoder();
79 ProtocolCodecSession session = new ProtocolCodecSession();
80 ProtocolDecoderOutput decoderOut = session.getDecoderOutput();
81 decoder.decode(session, in.duplicate(), decoderOut);
82
83 assertEquals(1, session.getDecoderOutputQueue().size());
84 assertEquals(expected, session.getDecoderOutputQueue().poll());
85 osis.close();
86 }
87 }