Add new “quelaton” FCP client API
[jFCPlib.git] / src / test / java / net / pterodactylus / fcp / fake / FakeTcpServerTest.java
1 package net.pterodactylus.fcp.fake;
2
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;
7
8 import java.io.IOException;
9 import java.net.Proxy;
10 import java.net.ProxySelector;
11 import java.net.Socket;
12 import java.net.SocketAddress;
13 import java.net.URI;
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;
19
20 import org.junit.Test;
21
22 /**
23  * TODO
24  *
25  * @author <a href="bombe@freenetproject.org">David ‘Bombe’ Roden</a>
26  */
27 public class FakeTcpServerTest {
28
29         private final ExecutorService sameThread = Executors.newSingleThreadExecutor();
30         private final FakeTcpServer tcpServer;
31
32         public FakeTcpServerTest() throws IOException {
33                 this.tcpServer = new FakeTcpServer(sameThread);
34         }
35
36         @Test
37         public void testConnect() throws IOException, ExecutionException, InterruptedException {
38                 ProxySelector.setDefault(new ProxySelector() {
39                         @Override
40                         public List<Proxy> select(URI uri) {
41                                 return asList(Proxy.NO_PROXY);
42                         }
43
44                         @Override
45                         public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
46                         }
47                 });
48                 tcpServer.connect();
49                 try (TextSocket clientSocket = new TextSocket(new Socket("127.0.0.1", tcpServer.getPort()))) {
50                         clientSocket.writeLine("Hello");
51                         clientSocket.writeLine("Bye");
52                         List<String> receivedLines = tcpServer.collectUntil(is("Bye"));
53                         assertThat(receivedLines, contains("Hello", "Bye"));
54                         tcpServer.writeLine("Yes");
55                         tcpServer.writeLine("Quit");
56                         receivedLines = clientSocket.collectUntil(is("Quit"));
57                         assertThat(receivedLines, contains("Yes", "Quit"));
58                 }
59         }
60
61 }