summaryrefslogtreecommitdiffstats
path: root/third_party/rust/ws/tests/bind.rs
blob: 2a0c534621783bab02ec7eb2ad353b1d8cabc062 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
extern crate ws;

use std::net::Ipv4Addr;

struct Handler;
impl ws::Handler for Handler {}

#[test]
fn bind_port_zero() {
    let ws = ws::WebSocket::new(|_sender| Handler).unwrap();
    let ws = ws.bind("127.0.0.1:0").unwrap();

    let local_addr = ws.local_addr().unwrap();
    println!("Listening on {}", local_addr);

    assert_eq!(Ipv4Addr::new(127, 0, 0, 1), local_addr.ip());
    assert_ne!(0, local_addr.port());
}

#[test]
fn bind_try_multiple_addrs() {
    let invalid_addr = "99.99.99.99:0".parse().unwrap();
    let valid_addr = "127.0.0.1:9876".parse().unwrap();
    let addrs = vec![invalid_addr, valid_addr, invalid_addr];

    let ws = ws::WebSocket::new(|_sender| Handler).unwrap();
    let ws = ws.bind(&addrs[..]).unwrap();

    let local_addr = ws.local_addr().unwrap();
    assert_eq!(valid_addr, local_addr);
}