1 20 package org.apache.mina.filter.codec.serialization; 21 22 import java.io.ByteArrayOutputStream ; 23 import java.net.SocketAddress ; 24 import java.util.ArrayList ; 25 import java.util.List ; 26 27 import junit.framework.Assert; 28 import junit.framework.TestCase; 29 30 import org.apache.mina.common.ByteBuffer; 31 import org.apache.mina.common.IoFilterChain; 32 import org.apache.mina.common.IoHandler; 33 import org.apache.mina.common.IoService; 34 import org.apache.mina.common.IoServiceConfig; 35 import org.apache.mina.common.IoSession; 36 import org.apache.mina.common.IoSessionConfig; 37 import org.apache.mina.common.TransportType; 38 import org.apache.mina.common.WriteFuture; 39 import org.apache.mina.common.support.BaseIoSession; 40 import org.apache.mina.filter.codec.ProtocolDecoder; 41 import org.apache.mina.filter.codec.ProtocolDecoderOutput; 42 import org.apache.mina.filter.codec.ProtocolEncoder; 43 import org.apache.mina.filter.codec.support.SimpleProtocolEncoderOutput; 44 45 51 public class ObjectSerializationTest extends TestCase { 52 public void testEncoder() throws Exception { 53 final String expected = "1234"; 54 55 IoSession session = new MockIoSession(); 56 SimpleProtocolEncoderOutput out = new SimpleProtocolEncoderOutput() { 57 protected WriteFuture doFlush(ByteBuffer buf) { 58 return null; 59 } 60 }; 61 62 ProtocolEncoder encoder = new ObjectSerializationEncoder(); 63 encoder.encode(session, expected, out); 64 65 Assert.assertEquals(1, out.getBufferQueue().size()); 66 ByteBuffer buf = out.getBufferQueue().poll(); 67 68 testDecoderAndInputStream(expected, buf); 69 } 70 71 public void testOutputStream() throws Exception { 72 final String expected = "1234"; 73 74 ByteArrayOutputStream baos = new ByteArrayOutputStream (); 75 ObjectSerializationOutputStream osos = new ObjectSerializationOutputStream( 76 baos); 77 78 osos.writeObject(expected); 79 osos.flush(); 80 81 testDecoderAndInputStream(expected, ByteBuffer.wrap(baos.toByteArray())); 82 } 83 84 private void testDecoderAndInputStream(String expected, ByteBuffer in) 85 throws Exception { 86 ObjectSerializationInputStream osis = new ObjectSerializationInputStream( 88 in.duplicate().asInputStream()); 89 90 Object actual = osis.readObject(); 91 assertEquals(expected, actual); 92 93 ProtocolDecoder decoder = new ObjectSerializationDecoder(); 95 MockProtocolDecoderOutput decoderOut = new MockProtocolDecoderOutput(); 96 IoSession session = new MockIoSession(); 97 decoder.decode(session, in.duplicate(), decoderOut); 98 99 Assert.assertEquals(expected, decoderOut.result.get(0)); 100 Assert.assertEquals(1, decoderOut.result.size()); 101 } 102 103 private static class MockIoSession extends BaseIoSession { 104 105 protected void updateTrafficMask() { 106 } 107 108 public IoSessionConfig getConfig() { 109 return null; 110 } 111 112 public IoFilterChain getFilterChain() { 113 return null; 114 } 115 116 public IoHandler getHandler() { 117 return null; 118 } 119 120 public SocketAddress getLocalAddress() { 121 return null; 122 } 123 124 public SocketAddress getRemoteAddress() { 125 return null; 126 } 127 128 public int getScheduledWriteBytes() { 129 return 0; 130 } 131 132 public int getScheduledWriteRequests() { 133 return 0; 134 } 135 136 public IoService getService() { 137 return null; 138 } 139 140 public SocketAddress getServiceAddress() { 141 return null; 142 } 143 144 public IoServiceConfig getServiceConfig() { 145 return null; 146 } 147 148 public TransportType getTransportType() { 149 return null; 150 } 151 } 152 153 private static class MockProtocolDecoderOutput implements 154 ProtocolDecoderOutput { 155 private List <Object > result = new ArrayList <Object >(); 156 157 public void flush() { 158 } 159 160 public void write(Object message) { 161 result.add(message); 162 } 163 } 164 } 165 | Popular Tags |