diff --git a/.classpath b/.classpath index e3d14e4..9df503b 100644 --- a/.classpath +++ b/.classpath @@ -4,5 +4,8 @@ + + + diff --git a/bin/test.xml b/bin/test.xml new file mode 100644 index 0000000..6d74a97 --- /dev/null +++ b/bin/test.xml @@ -0,0 +1,27 @@ + + + Variable Contents + + + + + echo this could be a whole batch script or just one command + + + print("this could be a whole python script or just one call") + + + echo "this could be a whole sh script or just one command" + + + echo "this could be a whole powershell script or just one command" + + + + + dist/* + + dist/ + + + \ No newline at end of file diff --git a/build.xml b/build.xml index 035b5fa..c78eb52 100644 --- a/build.xml +++ b/build.xml @@ -52,7 +52,7 @@ - + diff --git a/src/com/flaremicro/crossjeeves/net/ClientHandler.java b/src/com/flaremicro/crossjeeves/net/ClientHandler.java index 82deb9d..ee804fe 100644 --- a/src/com/flaremicro/crossjeeves/net/ClientHandler.java +++ b/src/com/flaremicro/crossjeeves/net/ClientHandler.java @@ -9,8 +9,8 @@ import com.flaremicro.crossjeeves.net.packet.Packet127KeepAlive; import com.flaremicro.crossjeeves.net.packet.Packet1Status; import com.flaremicro.crossjeeves.net.packet.Packet2Script; import com.flaremicro.crossjeeves.net.packet.Packet3Clone; -import com.flaremicro.crossjeeves.net.packet.Packet4FileData; import com.flaremicro.crossjeeves.net.packet.Packet5Artifact; +import com.flaremicro.crossjeeves.net.packet.test.Packet4FileDataTest; import com.flaremicro.util.ZipUtils; public class ClientHandler extends NetworkHandler { @@ -61,7 +61,7 @@ public class ClientHandler extends NetworkHandler { } @Override - public void handlePacket(Packet4FileData packet) { + public void handlePacket(Packet4FileDataTest packet) { // TODO Auto-generated method stub } diff --git a/src/com/flaremicro/crossjeeves/net/NetworkHandler.java b/src/com/flaremicro/crossjeeves/net/NetworkHandler.java index bc9138e..1c42dc3 100644 --- a/src/com/flaremicro/crossjeeves/net/NetworkHandler.java +++ b/src/com/flaremicro/crossjeeves/net/NetworkHandler.java @@ -6,8 +6,8 @@ import com.flaremicro.crossjeeves.net.packet.Packet127KeepAlive; import com.flaremicro.crossjeeves.net.packet.Packet1Status; import com.flaremicro.crossjeeves.net.packet.Packet2Script; import com.flaremicro.crossjeeves.net.packet.Packet3Clone; -import com.flaremicro.crossjeeves.net.packet.Packet4FileData; import com.flaremicro.crossjeeves.net.packet.Packet5Artifact; +import com.flaremicro.crossjeeves.net.packet.test.Packet4FileDataTest; public abstract class NetworkHandler { @@ -17,7 +17,7 @@ public abstract class NetworkHandler { public abstract void handlePacket(Packet1Status packet); public abstract void handlePacket(Packet2Script packet); public abstract void handlePacket(Packet3Clone packet); - public abstract void handlePacket(Packet4FileData packet); + public abstract void handlePacket(Packet4FileDataTest packet); public abstract void handlePacket(Packet5Artifact packet); public abstract void handlePacket(Packet127KeepAlive packet); diff --git a/src/com/flaremicro/crossjeeves/net/ServerHandler.java b/src/com/flaremicro/crossjeeves/net/ServerHandler.java index 9e6857b..57e5dd2 100644 --- a/src/com/flaremicro/crossjeeves/net/ServerHandler.java +++ b/src/com/flaremicro/crossjeeves/net/ServerHandler.java @@ -6,8 +6,8 @@ import com.flaremicro.crossjeeves.net.packet.Packet127KeepAlive; import com.flaremicro.crossjeeves.net.packet.Packet1Status; import com.flaremicro.crossjeeves.net.packet.Packet2Script; import com.flaremicro.crossjeeves.net.packet.Packet3Clone; -import com.flaremicro.crossjeeves.net.packet.Packet4FileData; import com.flaremicro.crossjeeves.net.packet.Packet5Artifact; +import com.flaremicro.crossjeeves.net.packet.test.Packet4FileDataTest; public class ServerHandler extends NetworkHandler { @@ -39,7 +39,7 @@ public class ServerHandler extends NetworkHandler { } @Override - public void handlePacket(Packet4FileData packet) { + public void handlePacket(Packet4FileDataTest packet) { // TODO Auto-generated method stub } diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet0Identify.java b/src/com/flaremicro/crossjeeves/net/packet/Packet0Identify.java index 555413d..d1714be 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet0Identify.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet0Identify.java @@ -7,8 +7,8 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet0Identify extends Packet{ - public int protocolVersion; - int flags; + private int protocolVersion; + private int flags; public Packet0Identify(){ } @@ -32,6 +32,16 @@ public class Packet0Identify extends Packet{ public void processPacket(NetworkHandler networkHandler){ networkHandler.handlePacket(this); } + + public int getProtocolVersion() + { + return protocolVersion; + } + + public int getFlags() + { + return flags; + } @Override public Packet cloneTypeOnly() { diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet1Status.java b/src/com/flaremicro/crossjeeves/net/packet/Packet1Status.java index 45a6001..33940f3 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet1Status.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet1Status.java @@ -7,8 +7,7 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet1Status extends Packet{ - public int protocolVersion; - int flags; + private int flags; public static final int BUSY = 0x00000001; @@ -31,6 +30,11 @@ public class Packet1Status extends Packet{ public void processPacket(NetworkHandler networkHandler){ networkHandler.handlePacket(this); } + + public int getFlags() + { + return flags; + } @Override public Packet cloneTypeOnly() { diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet2Script.java b/src/com/flaremicro/crossjeeves/net/packet/Packet2Script.java index d80a8f1..a1816c8 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet2Script.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet2Script.java @@ -7,7 +7,7 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet2Script extends Packet{ - String script; + public String script; public Packet2Script(){ } diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet3Clone.java b/src/com/flaremicro/crossjeeves/net/packet/Packet3Clone.java index 33f3896..b5bcfcb 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet3Clone.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet3Clone.java @@ -7,8 +7,8 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet3Clone extends Packet{ - long fileId; - long fileSize; + private long fileId; + private long fileSize; public Packet3Clone(){ } diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet4FileData.java b/src/com/flaremicro/crossjeeves/net/packet/Packet4FileData.java index 8d05165..e3ae48a 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet4FileData.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet4FileData.java @@ -7,8 +7,8 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet4FileData extends Packet{ - long fileId; - byte[] fileChunk; + private long fileId; + private byte[] fileChunk; public Packet4FileData(){ } @@ -35,7 +35,17 @@ public class Packet4FileData extends Packet{ public void processPacket(NetworkHandler networkHandler){ networkHandler.handlePacket(this); } + + public long getFileId() + { + return fileId; + } + public byte[] getFileChunk() + { + return fileChunk; + } + @Override public Packet cloneTypeOnly() { return new Packet4FileData(); diff --git a/src/com/flaremicro/crossjeeves/net/packet/Packet5Artifact.java b/src/com/flaremicro/crossjeeves/net/packet/Packet5Artifact.java index 5569b83..5250e49 100644 --- a/src/com/flaremicro/crossjeeves/net/packet/Packet5Artifact.java +++ b/src/com/flaremicro/crossjeeves/net/packet/Packet5Artifact.java @@ -7,14 +7,15 @@ import java.io.IOException; import com.flaremicro.crossjeeves.net.NetworkHandler; public class Packet5Artifact extends Packet{ - long fileId; - String relativeFile; + private long fileId; + private String relativeFile; public Packet5Artifact(){ } public Packet5Artifact(long fileId, String relativeFile){ this.fileId = fileId; + this.relativeFile = relativeFile; } public void recievePacket(DataInputStream in) throws IOException { @@ -31,6 +32,15 @@ public class Packet5Artifact extends Packet{ public void processPacket(NetworkHandler networkHandler){ networkHandler.handlePacket(this); } + + public long getFileId() + { + return fileId; + } + + public String getRelativeFile(){ + return this.relativeFile; + } @Override public Packet cloneTypeOnly() { diff --git a/test/com/flaremicro/crossjeeves/MainTest.java b/test/com/flaremicro/crossjeeves/MainTest.java deleted file mode 100644 index db73d01..0000000 --- a/test/com/flaremicro/crossjeeves/MainTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.flaremicro.crossjeeves; - -import static org.junit.Assert.*; - -import org.junit.Test; - -public class MainTest { - - @Test - public void test() { - assertTrue(true); - } - -} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet0IdentifyTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet0IdentifyTest.java new file mode 100644 index 0000000..346a069 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet0IdentifyTest.java @@ -0,0 +1,68 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet0Identify; + +@RunWith(MockitoJUnitRunner.class) +public class Packet0IdentifyTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet0Identify packet = new Packet0Identify(1337); + assertEquals(1337, packet.getFlags()); + assertEquals(Packet.PROTOCOL_VERSION, packet.getProtocolVersion()); + packet.sendPacket(output()); + + assertEquals(0, input().readByte()); + assertEquals(Packet.PROTOCOL_VERSION, input().readInt()); + assertEquals(1337, input().readInt()); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet0Identify packet = new Packet0Identify(); + + output().writeInt(Packet.PROTOCOL_VERSION); + output().writeInt(1337); + + packet.recievePacket(input()); + + assertEquals(Packet.PROTOCOL_VERSION, packet.getProtocolVersion()); + assertEquals(1337, packet.getFlags()); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet0Identify packet = new Packet0Identify(1337); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet0Identify packet = new Packet0Identify(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet1StatusTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet1StatusTest.java new file mode 100644 index 0000000..4245524 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet1StatusTest.java @@ -0,0 +1,64 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet1Status; + +@RunWith(MockitoJUnitRunner.class) +public class Packet1StatusTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet1Status packet = new Packet1Status(1337); + assertEquals(1337, packet.getFlags()); + packet.sendPacket(output()); + + assertEquals(1, input().readByte()); + assertEquals(1337, input().readInt()); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet1Status packet = new Packet1Status(); + + output().writeInt(1337); + + packet.recievePacket(input()); + + assertEquals(1337, packet.getFlags()); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet1Status packet = new Packet1Status(1337); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet1Status packet = new Packet1Status(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet2ScriptTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet2ScriptTest.java new file mode 100644 index 0000000..1974b6e --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet2ScriptTest.java @@ -0,0 +1,66 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet2Script; + +@RunWith(MockitoJUnitRunner.class) +public class Packet2ScriptTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet2Script packet = new Packet2Script("1337"); + assertEquals("1337", packet.script); + packet.sendPacket(output()); + + assertEquals(2, input().readByte()); + assertEquals("1337", input().readUTF()); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet2Script packet = new Packet2Script(); + + packet.script = ""; + + output().writeUTF("1337"); + + packet.recievePacket(input()); + + assertEquals("1337", packet.script); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet2Script packet = new Packet2Script("1337"); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet2Script packet = new Packet2Script(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet3CloneTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet3CloneTest.java new file mode 100644 index 0000000..43a8ec5 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet3CloneTest.java @@ -0,0 +1,68 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet3Clone; + +@RunWith(MockitoJUnitRunner.class) +public class Packet3CloneTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet3Clone packet = new Packet3Clone(1, 2); + assertEquals(packet.getFileID(), 1); + assertEquals(packet.getFileSize(), 2); + packet.sendPacket(output()); + + assertEquals(3, input().readByte()); + assertEquals(1, input().readLong()); + assertEquals(2, input().readLong()); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet3Clone packet = new Packet3Clone(); + + output().writeLong(1); + output().writeLong(2); + + packet.recievePacket(input()); + + assertEquals(1, packet.getFileID()); + assertEquals(2, packet.getFileSize()); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet3Clone packet = new Packet3Clone(1, 2); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet3Clone packet = new Packet3Clone(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet4FileDataTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet4FileDataTest.java new file mode 100644 index 0000000..101b911 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet4FileDataTest.java @@ -0,0 +1,67 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet5Artifact; + +@RunWith(MockitoJUnitRunner.class) +public class Packet4FileDataTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet5Artifact packet = new Packet5Artifact(1, "file.txt"); + assertEquals(packet.getFileId(), 1); + assertEquals("file.txt", packet.getRelativeFile()); + packet.sendPacket(output()); + + assertEquals(5, input().readByte()); + assertEquals(1, input().readLong()); + assertEquals("file.txt", input().readUTF()); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet5Artifact packet = new Packet5Artifact(); + + output().writeLong(1); + output().writeUTF("file.txt"); + + packet.recievePacket(input()); + + assertEquals(1, packet.getFileId()); + assertEquals("file.txt", packet.getRelativeFile()); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet5Artifact packet = new Packet5Artifact(1, "file.txt"); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet5Artifact packet = new Packet5Artifact(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/Packet5ArtifactTest.java b/test/com/flaremicro/crossjeeves/net/packet/test/Packet5ArtifactTest.java new file mode 100644 index 0000000..ef6e745 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/Packet5ArtifactTest.java @@ -0,0 +1,74 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertArrayEquals; + +import java.io.IOException; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.flaremicro.crossjeeves.net.NetworkHandler; +import com.flaremicro.crossjeeves.net.packet.Packet; +import com.flaremicro.crossjeeves.net.packet.Packet4FileData; + +@RunWith(MockitoJUnitRunner.class) +public class Packet5ArtifactTest extends PacketTestBase { + + @Mock + NetworkHandler handler; + + @Test + public void testWrite() throws IOException + { + Packet4FileData packet = new Packet4FileData(1, new byte[]{1,2,3,4}); + assertEquals(packet.getFileId(), 1); + assertArrayEquals(new byte[]{1,2,3,4}, packet.getFileChunk()); + packet.sendPacket(output()); + + byte[] buffer = new byte[4]; + + assertEquals(4, input().readByte()); + assertEquals(1, input().readLong()); + assertEquals(4, input().readShort()); + input().readFully(buffer); + assertArrayEquals(new byte[]{1,2,3,4}, buffer); + assertBufferEmpty(); + } + + @Test + public void testRead() throws IOException + { + Packet4FileData packet = new Packet4FileData(); + + output().writeLong(1); + output().writeShort(4); + output().write(new byte[]{1,2,3,4}); + + packet.recievePacket(input()); + + assertEquals(1, packet.getFileId()); + assertArrayEquals(new byte[]{1,2,3,4}, packet.getFileChunk()); + assertBufferEmpty(); + } + + @Test + public void testProcess() throws IOException + { + Packet4FileData packet = new Packet4FileData(1, new byte[]{1,2,3,4}); + packet.processPacket(handler); + Mockito.verify(handler, Mockito.times(1)).handlePacket(packet); + } + + @Test + public void testTypeCopy() + { + Packet4FileData packet = new Packet4FileData(); + Packet clonedPacket = packet.cloneTypeOnly(); + assertEquals(packet.getClass(), clonedPacket.getClass()); + } + +} diff --git a/test/com/flaremicro/crossjeeves/net/packet/test/PacketTestBase.java b/test/com/flaremicro/crossjeeves/net/packet/test/PacketTestBase.java new file mode 100644 index 0000000..ea8b076 --- /dev/null +++ b/test/com/flaremicro/crossjeeves/net/packet/test/PacketTestBase.java @@ -0,0 +1,44 @@ +package com.flaremicro.crossjeeves.net.packet.test; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + +import org.junit.AfterClass; +import org.junit.Before; + +import com.flaremicro.test.util.InOutBuffer; + +public abstract class PacketTestBase { + + private static InOutBuffer buffer = new InOutBuffer(); + private static DataInputStream input = new DataInputStream(buffer.getInputStream()); + private static DataOutputStream output = new DataOutputStream(buffer.getOutputStream()); + + @AfterClass + public static void cleanUp() throws IOException { + buffer.empty(); + input.close(); + output.close(); + } + + @Before + public void clearBuffer() + { + buffer.empty(); + } + + public void assertBufferEmpty() { + assertEquals(0, buffer.size()); + } + + protected DataInputStream input() { + return input; + } + + protected DataOutputStream output() { + return output; + } +} \ No newline at end of file diff --git a/test/com/flaremicro/test/util/InOutBuffer.java b/test/com/flaremicro/test/util/InOutBuffer.java new file mode 100644 index 0000000..2bd3ff8 --- /dev/null +++ b/test/com/flaremicro/test/util/InOutBuffer.java @@ -0,0 +1,50 @@ +package com.flaremicro.test.util; + +import java.io.EOFException; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; + +public class InOutBuffer { + + private final ArrayList buffer = new ArrayList(); + + public final InputStream getInputStream() { + return new BufferInputStream(); + } + + public final OutputStream getOutputStream() { + return new BufferOutputStream(); + } + + public void empty() { + buffer.clear(); + } + + class BufferInputStream extends InputStream { + @Override + public int read() throws IOException { + synchronized (buffer) + { + if (buffer.size() <= 0) + throw new EOFException("End of file"); + return buffer.remove(0) & 0xFF; + } + } + } + + class BufferOutputStream extends OutputStream { + @Override + public void write(int arg0) throws IOException { + synchronized (buffer) + { + buffer.add((byte) arg0); + } + } + } + + public int size() { + return buffer.size(); + } +}