|
|
|
@ -29,6 +29,7 @@ import (
|
|
|
|
|
"tailscale.com/types/ptr"
|
|
|
|
|
"tailscale.com/util/deephash/testtype"
|
|
|
|
|
"tailscale.com/util/dnsname"
|
|
|
|
|
"tailscale.com/util/hashx"
|
|
|
|
|
"tailscale.com/version"
|
|
|
|
|
"tailscale.com/wgengine/filter"
|
|
|
|
|
"tailscale.com/wgengine/router"
|
|
|
|
@ -41,6 +42,14 @@ func (p appendBytes) AppendTo(b []byte) []byte {
|
|
|
|
|
return append(b, p...)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type implsSelfHasherValueRecv struct {
|
|
|
|
|
emit uint64
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s implsSelfHasherValueRecv) Hash(h *hashx.Block512) {
|
|
|
|
|
h.HashUint64(s.emit)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestHash(t *testing.T) {
|
|
|
|
|
type tuple [2]any
|
|
|
|
|
type iface struct{ X any }
|
|
|
|
@ -169,6 +178,12 @@ func TestHash(t *testing.T) {
|
|
|
|
|
b[0] = 1
|
|
|
|
|
return b
|
|
|
|
|
}()))}, wantEq: false},
|
|
|
|
|
{in: tuple{&implsSelfHasher{}, &implsSelfHasher{}}, wantEq: true},
|
|
|
|
|
{in: tuple{(*implsSelfHasher)(nil), (*implsSelfHasher)(nil)}, wantEq: true},
|
|
|
|
|
{in: tuple{(*implsSelfHasher)(nil), &implsSelfHasher{}}, wantEq: false},
|
|
|
|
|
{in: tuple{&implsSelfHasher{emit: 1}, &implsSelfHasher{emit: 2}}, wantEq: false},
|
|
|
|
|
{in: tuple{implsSelfHasherValueRecv{emit: 1}, implsSelfHasherValueRecv{emit: 2}}, wantEq: false},
|
|
|
|
|
{in: tuple{implsSelfHasherValueRecv{emit: 2}, implsSelfHasherValueRecv{emit: 2}}, wantEq: true},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tt := range tests {
|
|
|
|
|