v / vlib / net / address_test.c.v
124 lines · 110 sloc · 3.12 KB · f42b0541138761c2a3570ce5ebe4b46d63324c4d
Raw
1module net
2
3fn test_ip_port() {
4 assert new_ip(1234, addr_ip_any).port()! == 1234
5 assert new_ip6(1234, addr_ip6_any).port()! == 1234
6}
7
8fn test_wildcard_constructors_set_sockaddr_len_on_bsd() {
9 $if macos || freebsd || openbsd || netbsd || dragonfly {
10 assert new_ip(1234, addr_ip_any).len == u8(sizeof(C.sockaddr_in))
11 assert new_ip6(1234, addr_ip6_any).len == u8(sizeof(C.sockaddr_in6))
12 }
13}
14
15fn test_diagnostics() {
16 dump(aoffset)
17 eprintln('--------')
18 in6 := C.sockaddr_in6{}
19 our_ip6 := Ip6{}
20 $if macos {
21 dump(__offsetof(C.sockaddr_in6, sin6_len))
22 }
23 dump(__offsetof(C.sockaddr_in6, sin6_family))
24 dump(__offsetof(C.sockaddr_in6, sin6_port))
25 dump(__offsetof(C.sockaddr_in6, sin6_addr))
26 $if macos {
27 dump(sizeof(in6.sin6_len))
28 }
29 dump(sizeof(in6.sin6_family))
30 dump(sizeof(in6.sin6_port))
31 dump(sizeof(in6.sin6_addr))
32 dump(sizeof(in6))
33 eprintln('')
34 dump(__offsetof(Ip6, port))
35 dump(__offsetof(Ip6, addr))
36 dump(sizeof(our_ip6.port))
37 dump(sizeof(our_ip6.addr))
38 dump(sizeof(our_ip6))
39 eprintln('--------')
40 in4 := C.sockaddr_in{}
41 our_ip4 := Ip{}
42 $if macos {
43 dump(__offsetof(C.sockaddr_in, sin_len))
44 }
45 dump(__offsetof(C.sockaddr_in, sin_family))
46 dump(__offsetof(C.sockaddr_in, sin_port))
47 dump(__offsetof(C.sockaddr_in, sin_addr))
48 $if macos {
49 dump(sizeof(in4.sin_len))
50 }
51 dump(sizeof(in4.sin_family))
52 dump(sizeof(in4.sin_port))
53 dump(sizeof(in4.sin_addr))
54 dump(sizeof(in4))
55 eprintln('')
56 dump(__offsetof(Ip, port))
57 dump(__offsetof(Ip, addr))
58 dump(sizeof(our_ip4.port))
59 dump(sizeof(our_ip4.addr))
60 dump(sizeof(our_ip4))
61 eprintln('--------')
62 dump(__offsetof(C.sockaddr_un, sun_path))
63 dump(__offsetof(Unix, path))
64 eprintln('--------')
65}
66
67fn test_sizes_unix_sun_path() {
68 x1 := C.sockaddr_un{}
69 x2 := Unix{}
70 assert sizeof(x1.sun_path) == sizeof(x2.path)
71}
72
73fn test_offsets_ipv6() {
74 assert __offsetof(C.sockaddr_in6, sin6_addr) == __offsetof(Ip6, addr) + aoffset
75 assert __offsetof(C.sockaddr_in6, sin6_port) == __offsetof(Ip6, port) + aoffset
76}
77
78fn test_offsets_ipv4() {
79 assert __offsetof(C.sockaddr_in, sin_addr) == __offsetof(Ip, addr) + aoffset
80 assert __offsetof(C.sockaddr_in, sin_port) == __offsetof(Ip, port) + aoffset
81}
82
83fn test_offsets_unix() {
84 assert __offsetof(C.sockaddr_un, sun_path) == __offsetof(Unix, path) + aoffset
85}
86
87fn test_sizes_ipv6() {
88 assert sizeof(C.sockaddr_in6) == sizeof(Ip6) + aoffset
89}
90
91fn test_sizes_ipv4() {
92 assert sizeof(C.sockaddr_in) == sizeof(Ip) + aoffset
93}
94
95fn test_sizes_unix() {
96 assert sizeof(C.sockaddr_un) == sizeof(Unix) + aoffset
97}
98
99fn test_ip_str() {
100 ip1 := new_ip(1337, addr_ip_any).str()
101 expected1 := '0.0.0.0:1337'
102 assert ip1.len == expected1.len
103 assert ip1 == expected1
104
105 addr := [u8(2), 0, 2, 2]!
106 ip2 := new_ip(2202, addr).str()
107 expected2 := '2.0.2.2:2202'
108 assert ip2.len == expected2.len
109 assert ip2 == expected2
110}
111
112fn test_ip6_str() {
113 ip1 := new_ip6(1337, addr_ip6_any).str()
114 expected1 := '[::]:1337'
115 assert ip1.len == expected1.len
116 assert ip1 == expected1
117
118 addr := [u8(2), 0, 2, 2, 2, 0, 1, 1, 2, 3, 2, 1, 2, 3, 5, 2]!
119 ip2 := new_ip6(2022, addr).str()
120 println(ip2)
121 expected2 := '[200:202:200:101:203:201:203:502]:2022'
122 assert ip2.len == expected2.len
123 assert ip2 == expected2
124}
125