Files
engine.io-client-java/src/test/java/io/socket/engineio/client/BinaryWSTest.java
2015-08-31 02:34:28 +09:00

95 lines
3.2 KiB
Java

package io.socket.engineio.client;
import io.socket.emitter.Emitter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class BinaryWSTest extends Connection {
private Socket socket;
@Test(timeout = TIMEOUT)
public void receiveBinaryData() throws InterruptedException {
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
final byte[] binaryData = new byte[5];
for (int i = 0; i < binaryData.length; i++) {
binaryData[i] = (byte)i;
}
Socket.Options opts = new Socket.Options();
opts.port = PORT;
socket = new Socket(opts);
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.on(Socket.EVENT_UPGRADE, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.send(binaryData);
socket.on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... args) {
if (args[0] instanceof String) return;
values.offer(args[0]);
}
});
}
});
}
});
socket.open();
assertThat((byte[])values.take(), is(binaryData));
socket.close();
}
@Test(timeout = TIMEOUT)
public void receiveBinaryDataAndMultibyteUTF8String() throws InterruptedException {
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
final byte[] binaryData = new byte[5];
for (int i = 0; i < binaryData.length; i++) {
binaryData[i] = (byte)i;
}
final int[] msg = new int[] {0};
Socket.Options opts = new Socket.Options();
opts.port = PORT;
socket = new Socket(opts);
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.on(Socket.EVENT_UPGRADE, new Emitter.Listener() {
@Override
public void call(Object... args) {
socket.send(binaryData);
socket.send("cash money €€€");
socket.on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(Object... args) {
if ("hi".equals(args[0])) return;
values.offer(args[0]);
msg[0]++;
}
});
}
});
}
});
socket.open();
assertThat((byte[])values.take(), is(binaryData));
assertThat((String)values.take(), is("cash money €€€"));
socket.close();
}
}