SocketIoSocket extends Emitter { public synchronized void joinRoom(String... rooms) { final ArrayList<String> roomList = new ArrayList<>(); for (String room : rooms) { if (!mRooms.contains(room)) { roomList.add(room); } } if (roomList.size() > 0) { for (String room : roomList) { mAdapter.add(room, this); mRooms.add(room); } } } SocketIoSocket(SocketIoNamespaceImpl namespace, SocketIoClient client); @Override int hashCode(); @Override boolean equals(Object obj); String getId(); SocketIoNamespace getNamespace(); void disconnect(boolean close); void broadcast(String room, String event, Object... args); void broadcast(String[] rooms, String event, Object[] args); void send(String event, Object... args); void send(String event, Object[] args, ReceivedByRemoteAcknowledgementCallback acknowledgementCallback); synchronized void joinRoom(String... rooms); synchronized void leaveRoom(String... rooms); synchronized void leaveAllRooms(); void registerAllEventListener(AllEventListener listener); void unregisterAllEventListener(AllEventListener listener);  }
@Test public void test_joinRoom() { final LocalAdapterFactory adapterFactory = new LocalAdapterFactory(); final EngineIoServer engineIoServer = new EngineIoServer(); final SocketIoServer server = Mockito.spy(new SocketIoServer( engineIoServer, SocketIoServerOptions.newFromDefault().setAdapterFactory(adapterFactory))); final SocketIoNamespace namespace = server.namespace("/"); final Emitter.Listener connectionListener = Mockito.mock(Emitter.Listener.class); Mockito.doAnswer(invocation -> { final Object[] args = invocation.getArguments(); final SocketIoSocket socket = (SocketIoSocket) args[0]; final SocketIoAdapter adapter = adapterFactory.adapter; Mockito.reset(adapter); socket.joinRoom("foo"); Mockito.verify(adapter, Mockito.times(1)) .add(Mockito.eq("foo"), Mockito.eq(socket)); Mockito.reset(adapter); socket.joinRoom("bar"); Mockito.verify(adapter, Mockito.times(1)) .add(Mockito.eq("bar"), Mockito.eq(socket)); Mockito.reset(adapter); socket.joinRoom("foo"); Mockito.verify(adapter, Mockito.times(0)) .add(Mockito.eq("foo"), Mockito.eq(socket)); return null; }).when(connectionListener).call(Mockito.any()); namespace.on("connection", connectionListener); final EngineIoWebSocketImpl webSocket = new EngineIoWebSocketImpl(); engineIoServer.handleWebSocket(webSocket); Mockito.verify(connectionListener, Mockito.times(1)) .call(Mockito.any(SocketIoSocket.class)); }