Browse Source

DecoderAckPacketTest added

master
Nikita 13 years ago
parent
commit
e693aaf36b
  1. 15
      src/main/java/com/corundumstudio/socketio/parser/Decoder.java
  2. 3
      src/main/java/com/corundumstudio/socketio/parser/Packet.java
  3. 37
      src/test/java/com/corundumstudio/socketio/parser/DecoderAckPacketTest.java

15
src/main/java/com/corundumstudio/socketio/parser/Decoder.java

@ -99,10 +99,8 @@ public class Decoder {
case EVENT:
Event event = objectMapper.readValue(data, Event.class);
packet.setName(event.getName());
packet.setArgs(event.getArgs());
if (packet.getArgs() == null) {
List<String> list = Collections.emptyList();
packet.setArgs(list);
if (event.getArgs() != null) {
packet.setArgs(event.getArgs());
}
break;
@ -120,11 +118,10 @@ public class Decoder {
Matcher ackMatcher = ackPattern.matcher(data);
if (ackMatcher.matches()) {
packet.setAckId(ackMatcher.group(1));
List<String> args = Collections.emptyList();
packet.setArgs(args);
String ackArgsJSON = extract(matcher, 3);
if (ackArgsJSON != null) {
args = objectMapper.readValue(ackArgsJSON, List.class);
String ackArgsJSON = extract(ackMatcher, 3);
if (ackArgsJSON != null && ackArgsJSON.trim().length() > 0) {
List<String> args = objectMapper.readValue(ackArgsJSON, List.class);
packet.setArgs(args);
}
}
}

3
src/main/java/com/corundumstudio/socketio/parser/Packet.java

@ -10,6 +10,7 @@
*/
package com.corundumstudio.socketio.parser;
import java.util.Collections;
import java.util.List;
public class Packet {
@ -18,7 +19,7 @@ public class Packet {
public static final Packet NULL_INSTANCE = new Packet(null);
private final PacketType type;
private List<String> args = null;
private List<String> args = Collections.emptyList();
private String qs;
private String ack;
private String ackId;

37
src/test/java/com/corundumstudio/socketio/parser/DecoderAckPacketTest.java

@ -0,0 +1,37 @@
package com.corundumstudio.socketio.parser;
import java.io.IOException;
import java.util.Arrays;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
public class DecoderAckPacketTest {
private final Decoder decoder = new Decoder(new ObjectMapper());
@Test
public void testDecode() throws IOException {
Packet packet = decoder.decodePacket("6:::140");
Assert.assertEquals(PacketType.ACK, packet.getType());
Assert.assertEquals("140", packet.getAckId());
Assert.assertTrue(packet.getArgs().isEmpty());
}
@Test
public void testDecodeWithArgs() throws IOException {
Packet packet = decoder.decodePacket("6:::12+[\"woot\",\"wa\"]");
Assert.assertEquals(PacketType.ACK, packet.getType());
Assert.assertEquals("12", packet.getAckId());
Assert.assertEquals(Arrays.asList("woot", "wa"), packet.getArgs());
}
@Test(expected=JsonMappingException.class)
public void testDecodeWithBadJson() throws IOException {
decoder.decodePacket("6:::1+{\"++]");
}
}
Loading…
Cancel
Save