fix error when emitting ack without args

This commit is contained in:
Naoyuki Kanezawa
2013-05-20 03:03:36 +09:00
parent 7d407f443d
commit 40a13b7882
2 changed files with 27 additions and 1 deletions

View File

@@ -159,7 +159,9 @@ public class Socket extends Emitter {
public void run() {
List<Object> _args = new ArrayList<Object>() {{
add(event);
addAll(Arrays.asList(args));
if (args != null) {
addAll(Arrays.asList(args));
}
}};
Packet packet = new Packet(Parser.EVENT, toJsonArray(_args));

View File

@@ -196,6 +196,30 @@ public class ServerConnectionTest {
socket.disconnect();
}
@Test(timeout = TIMEOUT)
public void ackWithoutArgs() throws URISyntaxException, InterruptedException {
final BlockingQueue<Object[]> events = new LinkedBlockingQueue<Object[]>();
IO.Options opts = new IO.Options();
opts.forceNew = true;
socket = IO.socket(uri(), opts);
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... objects) {
socket.emit("ack", null, new Ack() {
@Override
public void call(Object... args) {
System.out.println("ack: " + args);
events.offer(args);
}
});
}
});
socket.connect();
assertThat(events.take(), is(new Object[] {}));
socket.disconnect();
}
private String uri() {
return "http://localhost:" + PORT + nsp();