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) } }) } }