summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorHaidong Ji2019-01-29 11:49:03 -0600
committerHaidong Ji2019-01-29 11:49:03 -0600
commit83292a326000d1c7c5695f6cb8b8575081221cda (patch)
tree5caf1be5eb65cf6456d5f2e08c35f638974ad189 /src/test
parent29bb48a8cc8122871d8728be6fd8b853e52568bd (diff)
Network packet processing done!
Oh man, I spent so much time on this, on and off for more than 16 hours. But it was worth it in the end! Initially I didn't even noticed that there is a "what to do" part in exercise file, so I started coding following my own intuition, which wasn't too bad. I felt like I was going places and passed a few tests but failed one or two test cases. That's when things started getting difficult. I tried thinking, paper/pencil, sleeping on it, and reading forums (coursera, edx has no discussion on this when I worked on it). I then realized the "what to do" part in exercise and started following it. I should have stashed my code based on my own intuition, but I didn't. I'm learning, after all. Then my code got really messy. I added a lot of if statements and temp variables to get by, but it consistently fails on grader test case 20. That test case input is from a file, so far I haven't learned proper way of reading file as input in junit, so I started simplify my code hoping that I can pass. In the end my code simplification did work and passed the grader, but I really should learn how to use file input in JUnit, or how to feed input file. Eclipse makes that easy, but not IDEA, at least not the version of 2018.2. 2018.3 supposedly has it, but I don't know how to upgrade it safely on my Manjaro yet. Woohoo, fun stuff!
Diffstat (limited to 'src/test')
-rw-r--r--src/test/NetworkPacketTest.java109
1 files changed, 108 insertions, 1 deletions
diff --git a/src/test/NetworkPacketTest.java b/src/test/NetworkPacketTest.java
index fca3d60..aecd968 100644
--- a/src/test/NetworkPacketTest.java
+++ b/src/test/NetworkPacketTest.java
@@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-public class NetworkPacketTest {
+class NetworkPacketTest {
@Test
void test() {
int bufferMaxSize = 1;
@@ -56,4 +56,111 @@ public class NetworkPacketTest {
assertFalse(responses.get(1).dropped);
assertEquals(1, responses.get(1).startTime);
}
+
+ @Test
+ void test4() {
+ int bufferMaxSize = 1;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(1, 0));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(1, responses.size());
+ assertEquals(1, responses.get(0).startTime);
+ }
+
+ @Test
+ void test5() {
+ int bufferMaxSize = 1;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(0, 0));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(2, responses.size());
+ assertEquals(0, responses.get(0).startTime);
+ assertEquals(-1, responses.get(1).startTime);
+ }
+
+ @Test
+ void test6() {
+ int bufferMaxSize = 2;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(0, 1));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(2, responses.size());
+ assertEquals(0, responses.get(0).startTime);
+ assertEquals(1, responses.get(1).startTime);
+ }
+
+ @Test
+ void test7() {
+ int bufferMaxSize = 2;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(0, 1));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(3, responses.size());
+ assertEquals(0, responses.get(0).startTime);
+ assertEquals(1, responses.get(1).startTime);
+ assertEquals(-1, responses.get(2).startTime);
+ }
+
+ @Test
+ void test8() {
+ int bufferMaxSize = 3;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 2));
+ requests.add(new NetworkPacket.Request(1, 2));
+ requests.add(new NetworkPacket.Request(2, 2));
+ requests.add(new NetworkPacket.Request(3, 2));
+ requests.add(new NetworkPacket.Request(4, 2));
+ requests.add(new NetworkPacket.Request(5, 2));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(6, responses.size());
+ assertEquals(0, responses.get(0).startTime);
+ assertEquals(2, responses.get(1).startTime);
+ assertEquals(4, responses.get(2).startTime);
+ assertEquals(6, responses.get(3).startTime);
+ assertEquals(8, responses.get(4).startTime);
+ assertEquals(-1, responses.get(5).startTime);
+ }
+
+ @Test
+ void test9() {
+ int bufferMaxSize = 1;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(1, 1));
+ requests.add(new NetworkPacket.Request(2, 1));
+ requests.add(new NetworkPacket.Request(3, 1));
+ requests.add(new NetworkPacket.Request(3, 1));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(5, responses.size());
+ assertEquals(0, responses.get(0).startTime);
+ assertEquals(1, responses.get(1).startTime);
+ assertEquals(2, responses.get(2).startTime);
+ assertEquals(3, responses.get(3).startTime);
+ assertEquals(-1, responses.get(4).startTime);
+ }
+
+ @Test
+ void test10() {
+ int bufferMaxSize = 1;
+ NetworkPacket.Buffer buf = new NetworkPacket.Buffer(bufferMaxSize);
+ ArrayList<NetworkPacket.Request> requests = new ArrayList<>();
+ requests.add(new NetworkPacket.Request(0, 1));
+ requests.add(new NetworkPacket.Request(2, 1));
+ ArrayList<NetworkPacket.Response> responses = NetworkPacket.processRequests(requests, buf);
+ assertEquals(2, responses.size());
+ assertFalse(responses.get(0).dropped);
+ assertEquals(0, responses.get(0).startTime);
+ assertFalse(responses.get(1).dropped);
+ assertEquals(2, responses.get(1).startTime);
+ }
}