storrent/dht/msg_test.go
2026-01-19 21:13:01 +09:00

68 lines
1.0 KiB
Go

package dht
import (
"net"
"strings"
"testing"
)
func nid(c string) [20]byte {
var id [20]byte
copy(id[:], strings.Repeat(c, 20))
return id
}
func TestEncodeDecodeNodes(t *testing.T) {
tests := []struct {
name string
nodes []node
}{
{
name: "empty",
nodes: []node{},
},
{
name: "single",
nodes: []node{
{
ID: nid("a"),
Addr: &net.UDPAddr{
IP: net.IPv4(127, 0, 0, 1),
Port: 6881,
},
},
},
},
{
name: "multiple",
nodes: []node{
{
ID: nid("a"),
Addr: &net.UDPAddr{
IP: net.IPv4(127, 0, 0, 1),
Port: 6881,
},
},
{
ID: nid("a"),
Addr: &net.UDPAddr{
IP: net.IPv4(192, 168, 1, 1),
Port: 8080,
},
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
data := encodeNodes(tt.nodes)
got := decodeNodes(data)
data2 := encodeNodes(got)
if data != data2 {
t.Errorf("roundtrip mismatch: got %x, want %x", data2, data)
}
})
}
}