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