1 #![warn(rust_2018_idioms)]
2 #![cfg(feature = "full")]
3 
4 use tokio::net::TcpSocket;
5 use tokio_test::assert_ok;
6 
7 #[tokio::test]
basic_usage_v4()8 async fn basic_usage_v4() {
9     // Create server
10     let addr = assert_ok!("127.0.0.1:0".parse());
11     let srv = assert_ok!(TcpSocket::new_v4());
12     assert_ok!(srv.bind(addr));
13 
14     let srv = assert_ok!(srv.listen(128));
15 
16     // Create client & connect
17     let addr = srv.local_addr().unwrap();
18     let cli = assert_ok!(TcpSocket::new_v4());
19     let _cli = assert_ok!(cli.connect(addr).await);
20 
21     // Accept
22     let _ = assert_ok!(srv.accept().await);
23 }
24 
25 #[tokio::test]
basic_usage_v6()26 async fn basic_usage_v6() {
27     // Create server
28     let addr = assert_ok!("[::1]:0".parse());
29     let srv = assert_ok!(TcpSocket::new_v6());
30     assert_ok!(srv.bind(addr));
31 
32     let srv = assert_ok!(srv.listen(128));
33 
34     // Create client & connect
35     let addr = srv.local_addr().unwrap();
36     let cli = assert_ok!(TcpSocket::new_v6());
37     let _cli = assert_ok!(cli.connect(addr).await);
38 
39     // Accept
40     let _ = assert_ok!(srv.accept().await);
41 }
42 
43 #[tokio::test]
bind_before_connect()44 async fn bind_before_connect() {
45     // Create server
46     let any_addr = assert_ok!("127.0.0.1:0".parse());
47     let srv = assert_ok!(TcpSocket::new_v4());
48     assert_ok!(srv.bind(any_addr));
49 
50     let srv = assert_ok!(srv.listen(128));
51 
52     // Create client & connect
53     let addr = srv.local_addr().unwrap();
54     let cli = assert_ok!(TcpSocket::new_v4());
55     assert_ok!(cli.bind(any_addr));
56     let _cli = assert_ok!(cli.connect(addr).await);
57 
58     // Accept
59     let _ = assert_ok!(srv.accept().await);
60 }
61