Skip to content

Commit

Permalink
Att socket conversion tests
Browse files Browse the repository at this point in the history
  • Loading branch information
faern committed Nov 14, 2020
1 parent 47d243c commit f379d96
Showing 1 changed file with 34 additions and 1 deletion.
35 changes: 34 additions & 1 deletion src/net.rs
Original file line number Diff line number Diff line change
Expand Up @@ -970,7 +970,8 @@ impl WsaExtension {
#[cfg(test)]
mod tests {
use std::io::prelude::*;
use std::net::{SocketAddr, TcpListener, TcpStream, UdpSocket};
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV6, TcpListener, TcpStream, UdpSocket};
use std::slice;
use std::thread;

use socket2::{Domain, Socket, Type};
Expand Down Expand Up @@ -1239,4 +1240,36 @@ mod tests {
assert_eq!(addrs.remote(), Some(remote));
})
}

#[test]
fn sockaddr_convert_4() {
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(3, 4, 5, 6)), 0xabcd);
let (raw_addr, addr_len) = super::socket_addr_to_ptrs(&addr);
assert_eq!(addr_len, 16);
let addr_bytes = unsafe { slice::from_raw_parts(raw_addr as *const u8, addr_len as usize) };
assert_eq!(addr_bytes, &[2, 0, 0xab, 0xcd, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0]);

let addr2 = unsafe { super::ptrs_to_socket_addr(raw_addr, addr_len).unwrap() };
assert_eq!(addr, addr2);
}

#[test]
fn sockaddr_convert_v6() {
let port = 0xabcd;
let flowinfo = 0x12345678;
let scope_id = 0x987654321;
let addr = SocketAddr::V6(SocketAddrV6::new(
Ipv6Addr::new(0x0102, 0x0304, 0x0506, 0x0708, 0x090a, 0x0b0c, 0x0d0e, 0x0f10),
port,
flowinfo,
scope_id
));
let (raw_addr, addr_len) = super::socket_addr_to_ptrs(&addr);
assert_eq!(addr_len, 28);
let addr_bytes = unsafe { slice::from_raw_parts(raw_addr as *const u8, addr_len as usize) };
assert_eq!(addr_bytes, &[23, 0, 0xab, 0xcd, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0]);

let addr2 = unsafe { super::ptrs_to_socket_addr(raw_addr, addr_len).unwrap() };
assert_eq!(addr, addr2);
}
}

0 comments on commit f379d96

Please sign in to comment.