From 6841a52070f1ea0fe38073c26d8988cf0f85303c Mon Sep 17 00:00:00 2001 From: Naoyuki Kanezawa Date: Wed, 9 Apr 2014 00:14:19 +0900 Subject: [PATCH] add tests --- pom.xml | 6 ++ .../github/nkzawa/socketio/parser/Parser.java | 6 +- .../nkzawa/socketio/parser/ParserTest.java | 89 +++++++++++++++---- src/test/resources/package.json | 2 +- 4 files changed, 83 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index 0464346..5907769 100644 --- a/pom.xml +++ b/pom.xml @@ -76,6 +76,12 @@ 1.3 test + + org.skyscreamer + jsonassert + 1.2.3 + test + diff --git a/src/main/java/com/github/nkzawa/socketio/parser/Parser.java b/src/main/java/com/github/nkzawa/socketio/parser/Parser.java index 98bde5d..49febf2 100644 --- a/src/main/java/com/github/nkzawa/socketio/parser/Parser.java +++ b/src/main/java/com/github/nkzawa/socketio/parser/Parser.java @@ -132,7 +132,7 @@ public class Parser { public static String EVENT_DECODED = "decoded"; - private BinaryReconstructor reconstructor; + /*package*/ BinaryReconstructor reconstructor; public Decoder() { this.reconstructor = null; @@ -234,11 +234,11 @@ public class Parser { } - private static class BinaryReconstructor { + /*package*/ static class BinaryReconstructor { public Packet reconPack; - private List buffers; + /*package*/ List buffers; BinaryReconstructor(Packet packet) { this.reconPack = packet; diff --git a/src/test/java/com/github/nkzawa/socketio/parser/ParserTest.java b/src/test/java/com/github/nkzawa/socketio/parser/ParserTest.java index c76e68f..83eb66b 100644 --- a/src/test/java/com/github/nkzawa/socketio/parser/ParserTest.java +++ b/src/test/java/com/github/nkzawa/socketio/parser/ParserTest.java @@ -1,10 +1,13 @@ package com.github.nkzawa.socketio.parser; import com.github.nkzawa.emitter.Emitter; +import org.json.JSONArray; +import org.json.JSONObject; import org.json.JSONTokener; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import org.skyscreamer.jsonassert.JSONAssert; import java.nio.charset.Charset; @@ -54,7 +57,7 @@ public class ParserTest { } @Test - public void encodeBytes() { + public void encodeByteArray() { Packet packet = new Packet(Parser.BINARY_EVENT); packet.data = "abc".getBytes(Charset.forName("UTF-8")); packet.id = 23; @@ -62,6 +65,58 @@ public class ParserTest { testBin(packet); } + @Test + public void encodeByteArray2() { + Packet packet = new Packet(Parser.BINARY_EVENT); + packet.data = new byte[2]; + packet.id = 0; + packet.nsp = "/"; + testBin(packet); + } + + @Test + public void encodeByteArrayDeep() { + JSONObject data = new JSONObject("{a: \"hi\", b: {}, c: {a: \"bye\", b: {}}}"); + data.getJSONObject("b").put("why", new byte[3]); + data.getJSONObject("c").getJSONObject("b").put("a", new byte[6]); + + Packet packet = new Packet(Parser.BINARY_EVENT); + packet.data = data; + packet.id = 999; + packet.nsp = "/deep"; + testBin(packet); + } + + @Test + public void cleanItselfUpOnClose() { + JSONArray data = new JSONArray(); + data.put(new byte[2]); + data.put(new byte[3]); + + Packet packet = new Packet(Parser.BINARY_EVENT); + packet.data = data; + packet.id = 0; + packet.nsp = "/"; + + encoder.encode(packet, new Parser.Encoder.Callback() { + @Override + public void call(final Object[] encodedPackets) { + final Parser.Decoder decoder = new Parser.Decoder(); + decoder.on(Parser.Decoder.EVENT_DECODED, new Emitter.Listener() { + @Override + public void call(Object... args) { + throw new RuntimeException("received a packet when not all binary data was sent."); + } + }); + + decoder.add((String)encodedPackets[0]); + decoder.add((byte[]) encodedPackets[1]); + decoder.destroy(); + assertThat(decoder.reconstructor.buffers.size(), is(0)); + } + }); + } + private void test(final Packet obj) { encoder.encode(obj, new Parser.Encoder.Callback() { @Override @@ -71,15 +126,7 @@ public class ParserTest { @Override public void call(Object... args) { Packet packet = (Packet)args[0]; - assertThat(packet.type, is(obj.type)); - assertThat(packet.id, is(obj.id)); - if (packet.data == null) { - assertThat(packet.data, is(obj.data)); - } else { - assertThat(packet.data.toString(), is(obj.data.toString())); - } - assertThat(packet.nsp, is(obj.nsp)); - assertThat(packet.attachments, is(obj.attachments)); + assertPacket(packet, obj); } }); decoder.add((String)encodedPackets[0]); @@ -99,12 +146,7 @@ public class ParserTest { Packet packet = (Packet)args[0]; obj.data = originalData; obj.attachments = -1; - - assertThat(packet.type, is(obj.type)); - assertThat(packet.id, is(obj.id)); - assertThat(packet.data, is(obj.data)); - assertThat(packet.nsp, is(obj.nsp)); - assertThat(packet.attachments, is(obj.attachments)); + assertPacket(packet, obj); } }); @@ -118,4 +160,19 @@ public class ParserTest { } }); } + + private void assertPacket(Packet expected, Packet actual) { + assertThat(actual.type, is(expected.type)); + assertThat(actual.id, is(expected.id)); + assertThat(actual.nsp, is(expected.nsp)); + assertThat(actual.attachments, is(expected.attachments)); + + if (expected.data instanceof JSONArray) { + JSONAssert.assertEquals((JSONArray)expected.data, (JSONArray)actual.data, true); + } else if (expected.data instanceof JSONObject) { + JSONAssert.assertEquals((JSONObject)expected.data, (JSONObject)actual.data, true); + } else { + assertThat(actual.data, is(expected.data)); + } + } } diff --git a/src/test/resources/package.json b/src/test/resources/package.json index 7df28bf..b58e59a 100644 --- a/src/test/resources/package.json +++ b/src/test/resources/package.json @@ -4,6 +4,6 @@ "private": true, "dependencies": { "socket.io": "LearnBoost/socket.io", - "endine.io-parser": "nkzawa/engine.io-parser#patch-0" + "engine.io-parser": "nkzawa/engine.io-parser#patch-0" } }