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();
+ }
+}