1 package net.pterodactylus.fcp.fake;
3 import static java.util.Arrays.asList;
4 import static org.hamcrest.Matchers.contains;
5 import static org.hamcrest.Matchers.is;
6 import static org.junit.Assert.assertThat;
8 import java.io.IOException;
10 import java.net.ProxySelector;
11 import java.net.Socket;
12 import java.net.SocketAddress;
14 import java.util.List;
15 import java.util.concurrent.ExecutionException;
16 import java.util.concurrent.ExecutorService;
17 import java.util.concurrent.Executors;
18 import java.util.concurrent.Future;
20 import org.junit.Test;
25 * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
27 public class FakeTcpServerTest {
29 private final ExecutorService sameThread = Executors.newSingleThreadExecutor();
30 private final FakeTcpServer tcpServer;
32 public FakeTcpServerTest() throws IOException {
33 this.tcpServer = new FakeTcpServer(sameThread);
37 public void testConnect() throws IOException, ExecutionException, InterruptedException {
38 ProxySelector.setDefault(new ProxySelector() {
40 public List<Proxy> select(URI uri) {
41 return asList(Proxy.NO_PROXY);
45 public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
48 Future<?> connect = tcpServer.connect();
49 try (TextSocket clientSocket = new TextSocket(new Socket("127.0.0.1", tcpServer.getPort()))) {
51 clientSocket.writeLine("Hello");
52 clientSocket.writeLine("Bye");
53 List<String> receivedLines = tcpServer.collectUntil(is("Bye"));
54 assertThat(receivedLines, contains("Hello", "Bye"));
55 tcpServer.writeLine("Yes");
56 tcpServer.writeLine("Quit");
57 receivedLines = clientSocket.collectUntil(is("Quit"));
58 assertThat(receivedLines, contains("Yes", "Quit"));