package org.simpleframework.common.buffer.queue; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import junit.framework.TestCase; public class ArrayByteQueueTest extends TestCase { public void testArrayByteQueue() throws Exception { ArrayByteQueue queue = new ArrayByteQueue(10); for(int i = 0; i < 9; i++) { queue.write(new byte[]{(byte)('A'+i)}); } for(int i = 0; i < 9; i++) { byte[] b = new byte[1]; queue.read(b); System.err.write(b); System.err.println(); } for(int i = 9; i < 19; i++) { queue.write(new byte[]{(byte)('A'+i)}); } for(int i = 0; i < 9; i++) { byte[] b = new byte[1]; queue.read(b); System.err.write(b); System.err.println(); } } public void testRandomReadWrite() throws Exception { ArrayByteQueue queue = new ArrayByteQueue(1024 * 10); for(int i = 0; i < 100; i++) { String text = "Test: "+i; queue.write(text.getBytes()); } for(int i = 0; i < 100; i++) { String text = "Test: "+i; byte[] buffer = new byte[256]; int size = queue.read(buffer, 0, text.length()); String result = new String(buffer, 0, size); System.err.println(result); assertEquals(result, text); } } /* public void testStream() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final ArrayByteQueue queue = new ArrayByteQueue(1024 * 10); final Thread reader = new Thread(new Runnable() { public void run() { try { for(int i = 0; i < 100; i++) { byte[] chunk = new byte[(int)Math.round((Math.random() * 100))]; int size = queue.read(chunk); output.write(chunk, 0, size); } } catch(Exception e) { e.printStackTrace(); } } }); final Thread writer = new Thread(new Runnable() { public void run() { try { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ObjectOutputStream objectOutput = new ObjectOutputStream(buffer); for(int i = 0; i < 100; i++) { try { TestMessage message = new TestMessage(i, "Test Message: " +i); objectOutput.writeObject(message); objectOutput.flush(); byte[] messageBytes = buffer.toByteArray(); queue.write(messageBytes); buffer.reset(); // clear out the buffer so toByteArray picks up changes only } catch(Exception e) { e.printStackTrace(); } } }catch(Exception e){ e.printStackTrace(); } } }); writer.start(); reader.start(); writer.join(); Thread.sleep(5000); reader.interrupt(); reader.join(); ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray()); ObjectInputStream objectInput = new ObjectInputStream(input); for(int i = 0; i < 100; i++) { TestMessage message = (TestMessage)objectInput.readObject(); assertEquals(message.count, i); assertEquals(message.text, "Test Message: "+i); } } */ private static class TestMessage implements Serializable { public final int count; public final String text; public TestMessage(int count, String text) { this.count = count; this.text = text; } } }