-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconversion_test.go
74 lines (57 loc) · 1.58 KB
/
conversion_test.go
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package extnetip
import (
"net/netip"
"testing"
)
var mustAddr = netip.MustParseAddr
var (
addrSink addr
netipAddrSink netip.Addr
)
func TestIdempotent(t *testing.T) {
t.Parallel()
v4 := mustAddr("0.0.0.0")
if back(peek(v4)) != v4 {
t.Fatalf("back(peek(ip)) isn't idempotent, expect: %v, got: %v", v4, back(peek(v4)))
}
v6 := mustAddr("::")
if back(peek(v6)) != v6 {
t.Fatalf("back(peek(ip)) isn't idempotent, expect: %v, got: %v", v6, back(peek(v6)))
}
v4mappedv6 := mustAddr("::ffff:127.0.0.1")
if back(peek(v4mappedv6)) != v4mappedv6 {
t.Fatalf("back(peek(ip)) isn't idempotent, expect: %v, got: %v", v4mappedv6, back(peek(v4mappedv6)))
}
}
func TestModify(t *testing.T) {
t.Parallel()
p4 := peek(mustAddr("0.0.0.0"))
p4.ip.lo++ // add one
if back(p4) != mustAddr("0.0.0.1") {
t.Fatalf("peek -> add one -> back not as expected")
}
p4.ip.lo-- // sub one
if back(p4) != mustAddr("0.0.0.0") {
t.Fatalf("peek -> sub one -> back not as expected")
}
// --
p6 := peek(mustAddr("::"))
p6.ip.lo++ // add one
if back(p6) != mustAddr("::1") {
t.Fatalf("peek -> add one -> back not as expected")
}
p6.ip.lo-- // sub one
if back(p6) != mustAddr("::") {
t.Fatalf("peek -> sub one -> back not as expected")
}
// --
v4mappedv6 := peek(mustAddr("::ffff:127.0.0.0"))
v4mappedv6.ip.lo-- // sub one
if back(v4mappedv6) != mustAddr("::ffff:126.255.255.255") {
t.Fatalf("peek -> add one -> back not as expected")
}
v4mappedv6.ip.lo++ // add one
if back(v4mappedv6) != mustAddr("::ffff:127.0.0.0") {
t.Fatalf("peek -> sub one -> back not as expected")
}
}