package org.voovan.test.tools; import junit.framework.TestCase; import org.voovan.tools.ByteBufferChannel; import org.voovan.tools.TByteBuffer; import org.voovan.tools.log.Logger; import java.io.IOException; import java.nio.ByteBuffer; public class ByteBufferChannelUnit extends TestCase { private ByteBufferChannel byteBufferChannel; private String tmp1 = "helyho is a hero!!!"; private String tmp2 = " -=======!"; public ByteBufferChannelUnit(String name) { super(name); } public void init() { ByteBuffer buffer = ByteBuffer.wrap(tmp1.getBytes()); byteBufferChannel = new ByteBufferChannel(); byteBufferChannel.writeEnd(buffer); assertEquals(byteBufferChannel.size(),19); } public void testWriteEnd() throws IOException{ init(); int size = byteBufferChannel.size(); byteBufferChannel.writeEnd(ByteBuffer.wrap(tmp2.getBytes())); assertEquals(TByteBuffer.toString(byteBufferChannel.getByteBuffer()),tmp1+tmp2); } public void testWriteHead() throws IOException{ init(); byteBufferChannel.writeHead(ByteBuffer.wrap(tmp2.getBytes())); assertEquals(TByteBuffer.toString(byteBufferChannel.getByteBuffer()),tmp2+tmp1); } public void testReadHead() throws IOException{ init(); ByteBuffer buffer1 = ByteBuffer.allocate(5); int size = byteBufferChannel.readHead(buffer1); assertEquals(size, 5); assertEquals(TByteBuffer.toString(buffer1), "helyh"); assertEquals(TByteBuffer.toString(byteBufferChannel.getByteBuffer()),"o is a hero!!!"); } public void testReadEnd() throws IOException{ init(); ByteBuffer buffer1 = ByteBuffer.allocate(5); int size = byteBufferChannel.readEnd(buffer1); assertEquals(size, 5); assertEquals(TByteBuffer.toString(buffer1), "ro!!!"); assertEquals(TByteBuffer.toString(byteBufferChannel.getByteBuffer()),"helyho is a he"); } public void testArray(){ init(); assertEquals(new String(byteBufferChannel.array()), tmp1); } public void testGetByte(){ init(); assertEquals('h', byteBufferChannel.get(0)); assertEquals('e', byteBufferChannel.get(1)); assertEquals('l', byteBufferChannel.get(2)); assertEquals('y', byteBufferChannel.get(3)); } public void testIndex(){ init(); byte[] tmp = new byte[6]; int index = byteBufferChannel.indexOf("y".getBytes()); assertEquals(index,3); } public void testShrink(){ init(); byte[] tmp = new byte[6]; byteBufferChannel.shrink(-3); assertEquals("yho is a hero!!!",TByteBuffer.toString(byteBufferChannel.getByteBuffer())); byteBufferChannel.shrink(3); assertEquals("yho is a hero",TByteBuffer.toString(byteBufferChannel.getByteBuffer())); } public void testGetByteArray(){ init(); byte[] tmp = new byte[6]; byteBufferChannel.get(0, tmp, 6); assertEquals("helyho", new String(tmp)); } public void testCompact(){ init(); ByteBufferChannel byteBufferChannel1; byteBufferChannel1 = new ByteBufferChannel(6); byteBufferChannel1.writeEnd(ByteBuffer.wrap("bbccdd".getBytes())); byteBufferChannel1.getByteBuffer().position(2); byteBufferChannel1.compact(); assertEquals("ccdd",TByteBuffer.toString(byteBufferChannel1.getByteBuffer())); } public void testReadLine(){ init(); ByteBufferChannel byteBufferChannel1 = new ByteBufferChannel(); byteBufferChannel1.writeHead(ByteBuffer.wrap("aaaaa\r\nbbbbb\r\nccccc\r\n".getBytes())); while(true){ String tmp = byteBufferChannel1.readLine(); if(tmp==null){ break; } Logger.simple("lineCount: "+tmp); } } public void testReadWithSplit(){ init(); ByteBufferChannel byteBufferChannel1 = new ByteBufferChannel(); byteBufferChannel1.writeEnd(ByteBuffer.wrap("aaaaa\r\nbbbbb\r\nccccc\r\n".getBytes())); while(true){ ByteBuffer byteBuffer = byteBufferChannel1.readWithSplit("bbbbb\r\n".getBytes()); if(byteBuffer.limit() == 0){ break; } Logger.simple("splitedContent: "+ TByteBuffer.toString(byteBuffer)); } Logger.simple("========================"); byteBufferChannel1.writeEnd(ByteBuffer.wrap("bbbbb\r\nccccc\r\nbbbbb\r\nccccc\r\n".getBytes())); while(true){ ByteBuffer byteBuffer = byteBufferChannel1.readWithSplit("bbbbb\r\n".getBytes()); if(byteBuffer.limit()==0){ break; } Logger.simple("splitedContent: "+ TByteBuffer.toString(byteBuffer)); } } public void testSaveToFile() throws IOException { init(); byteBufferChannel.shrink(-3); byteBufferChannel.saveToFile("/Users/helyho/Downloads/test.txt",byteBufferChannel.size()-3); } public void testAll() throws IOException { ByteBufferChannel byteBufferChannel1; byteBufferChannel1 = new ByteBufferChannel(2); byteBufferChannel1.writeEnd(ByteBuffer.wrap("bbbbb".getBytes())); Logger.simple("bytbyteBufferChannel writeEnd: bbbbb"); byteBufferChannel1.writeEnd(ByteBuffer.wrap("ccccc".getBytes())); Logger.simple("bytbyteBufferChannel writeEnd: ccccc"); byteBufferChannel1.writeHead(ByteBuffer.wrap("aaaaa".getBytes())); Logger.simple("bytbyteBufferChannel writeHead: aaaaa"); byteBufferChannel1.writeEnd(ByteBuffer.wrap("ddddd".getBytes())); Logger.simple("bytbyteBufferChannel writeEnd: ddddd"); ByteBuffer bytebuffer = byteBufferChannel1.getByteBuffer(); Logger.simple("bytbyteBufferChannel content: "+TByteBuffer.toString(bytebuffer)); Logger.simple("bytebuffer get: '"+(char)bytebuffer.get()+"'"); Logger.simple("bytebuffer put: 'c'"); bytebuffer.put(new byte[]{99}); byteBufferChannel1.getByteBuffer().rewind(); Logger.simple("bytbyteBufferChannel content:"+new String(byteBufferChannel1.array())); ByteBuffer xxx = ByteBuffer.allocate(7); xxx.put((byte) '-'); xxx.put((byte) '='); byteBufferChannel1.readHead(xxx); Logger.simple("read head 5: "+new String(xxx.array())); xxx.clear(); xxx.put((byte) '-'); xxx.put((byte) '='); byteBufferChannel1.readEnd(xxx); Logger.simple("read End 5: "+new String(xxx.array())); xxx = ByteBuffer.allocate(5); byteBufferChannel1.readHead(xxx); Logger.simple("read head 5: "+new String(xxx.array())); xxx.rewind(); byteBufferChannel1.readHead(xxx); Logger.simple("read head 5: "+new String(xxx.array())); byteBufferChannel1.clear(); byteBufferChannel1.release(); byteBufferChannel1.release(); } }