diff options
author | Haidong Ji | 2019-01-29 11:49:03 -0600 |
---|---|---|
committer | Haidong Ji | 2019-01-29 11:49:03 -0600 |
commit | 83292a326000d1c7c5695f6cb8b8575081221cda (patch) | |
tree | 5caf1be5eb65cf6456d5f2e08c35f638974ad189 /src/test | |
parent | 29bb48a8cc8122871d8728be6fd8b853e52568bd (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.java | 109 |
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); + } } |