Browse Source

Encoder tests added

master
Nikita 13 years ago
parent
commit
10d824dba0
  1. 1
      src/main/java/com/corundumstudio/socketio/SocketIORouter.java
  2. 5
      src/main/java/com/corundumstudio/socketio/SocketIOServer.java
  3. 6
      src/main/java/com/corundumstudio/socketio/parser/Encoder.java
  4. 45
      src/test/java/com/corundumstudio/socketio/parser/EncoderConnectionPacketTest.java
  5. 50
      src/test/java/com/corundumstudio/socketio/parser/EncoderEventPacketTest.java
  6. 31
      src/test/java/com/corundumstudio/socketio/parser/EncoderMessagePacketTest.java
  7. 19
      src/test/java/com/corundumstudio/socketio/parser/PayloadTest.java

1
src/main/java/com/corundumstudio/socketio/SocketIORouter.java

@ -61,7 +61,6 @@ public class SocketIORouter {
this.objectMapper = objectMapper;
encoder = new Encoder(objectMapper);
decoder = new Decoder(objectMapper);
}
public void start() {

5
src/main/java/com/corundumstudio/socketio/SocketIOServer.java

@ -14,6 +14,7 @@ import java.net.InetSocketAddress;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.Channel;
@ -43,6 +44,10 @@ public class SocketIOServer {
private String hostname;
private int port;
public SocketIOServer() {
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}
public void start() {
InternalLoggerFactory.setDefaultFactory(new Slf4JLoggerFactory());

6
src/main/java/com/corundumstudio/socketio/parser/Encoder.java

@ -53,7 +53,11 @@ public class Encoder {
break;
case EVENT:
Event event = new Event(packet.getName(), packet.getArgs());
List<?> args = packet.getArgs();
if (args.isEmpty()) {
args = null;
}
Event event = new Event(packet.getName(), args);
data = objectMapper.writeValueAsString(event);
break;

45
src/test/java/com/corundumstudio/socketio/parser/EncoderConnectionPacketTest.java

@ -0,0 +1,45 @@
package com.corundumstudio.socketio.parser;
import java.io.IOException;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
public class EncoderConnectionPacketTest {
private Encoder encoder = new Encoder(new ObjectMapper());
@Test
public void testEncodeHeartbeat() throws IOException {
Packet packet = new Packet(PacketType.HEARTBEAT);
String result = encoder.encodePacket(packet);
Assert.assertEquals("2::", result);
}
@Test
public void testEncodeDisconnection() throws IOException {
Packet packet = new Packet(PacketType.DISCONNECT);
packet.setEndpoint("/woot");
String result = encoder.encodePacket(packet);
Assert.assertEquals("0::/woot", result);
}
@Test
public void testEncode() throws IOException {
Packet packet = new Packet(PacketType.CONNECT);
packet.setEndpoint("/tobi");
String result = encoder.encodePacket(packet);
Assert.assertEquals("1::/tobi", result);
}
@Test
public void testEncodePacketWithQueryString() throws IOException {
Packet packet = new Packet(PacketType.CONNECT);
packet.setEndpoint("/test");
packet.setQs("?test=1");
String result = encoder.encodePacket(packet);
Assert.assertEquals("1::/test:?test=1", result);
}
}

50
src/test/java/com/corundumstudio/socketio/parser/EncoderEventPacketTest.java

@ -0,0 +1,50 @@
package com.corundumstudio.socketio.parser;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.junit.Assert;
import org.junit.Test;
public class EncoderEventPacketTest {
private Encoder encoder;
public EncoderEventPacketTest() {
ObjectMapper om = new ObjectMapper();
om.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
encoder = new Encoder(om);
}
@Test
public void testEncode() throws IOException {
Packet packet = new Packet(PacketType.EVENT);
packet.setName("woot");
String result = encoder.encodePacket(packet);
Assert.assertEquals("5:::{\"name\":\"woot\"}", result);
}
@Test
public void testEncodeWithMessageIdAndAck() throws IOException {
Packet packet = new Packet(PacketType.EVENT);
packet.setId("1");
packet.setAck("data");
packet.setName("tobi");
String result = encoder.encodePacket(packet);
Assert.assertEquals("5:1+::{\"name\":\"tobi\"}", result);
}
@Test
public void testEncodeWithData() throws IOException {
Packet packet = new Packet(PacketType.EVENT);
packet.setName("edwald");
packet.setArgs(Arrays.asList(Collections.singletonMap("a", "b"), 2, "3"));
String result = encoder.encodePacket(packet);
Assert.assertEquals("5:::{\"name\":\"edwald\",\"args\":[{\"a\":\"b\"},2,\"3\"]}", result);
}
}

31
src/test/java/com/corundumstudio/socketio/parser/EncoderMessagePacketTest.java

@ -0,0 +1,31 @@
package com.corundumstudio.socketio.parser;
import java.io.IOException;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
public class EncoderMessagePacketTest {
private Encoder encoder = new Encoder(new ObjectMapper());
@Test
public void testEncode() throws IOException {
Packet packet = new Packet(PacketType.MESSAGE);
packet.setData("woot");
String result = encoder.encodePacket(packet);
Assert.assertEquals("3:::woot", result);
}
@Test
public void testEncodeWithIdAndEndpoint() throws IOException {
Packet packet = new Packet(PacketType.MESSAGE);
packet.setId("5");
packet.setAck(true);
packet.setEndpoint("/tobi");
String result = encoder.encodePacket(packet);
Assert.assertEquals("3:5:/tobi", result);
}
}

19
src/test/java/com/corundumstudio/socketio/parser/PayloadTest.java

@ -1,6 +1,7 @@
package com.corundumstudio.socketio.parser;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -12,6 +13,7 @@ import org.junit.Test;
public class PayloadTest {
private final Decoder decoder = new Decoder(new ObjectMapper());
private final Encoder encoder = new Encoder(new ObjectMapper());
//@Test
public void testPayloadDecodePerf() throws IOException {
@ -37,5 +39,22 @@ public class PayloadTest {
Packet msg3 = payload.get(2);
Assert.assertEquals(PacketType.DISCONNECT, msg3.getType());
}
@Test
public void testPayloadEncode() throws IOException {
Packet packet1 = new Packet(PacketType.MESSAGE);
packet1.setData("5");
Packet packet2 = new Packet(PacketType.MESSAGE);
packet2.setData("53d");
CharSequence result = encoder.encodePayload(Arrays.asList(encoder.encodePacket(packet1), encoder.encodePacket(packet2)));
Assert.assertEquals("\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d", result.toString());
}
@Test
public void testDecodingNewline() throws IOException {
Packet packet = decoder.decodePacket("3:::\n");
Assert.assertEquals(PacketType.MESSAGE, packet.getType());
Assert.assertEquals("\n", packet.getData());
}
}
Loading…
Cancel
Save