import (
"encoding"
+ "hash"
+ "internal/testhash"
"io"
"strings"
"testing"
)
+func TestHashInterface(t *testing.T) {
+ testhash.TestHash(t, func() hash.Hash { return New() })
+}
+
var golden = []struct {
out uint32
in string
"encoding"
"fmt"
"hash"
+ "internal/testhash"
"io"
"math/rand"
"testing"
ieee.Write([]byte("hello"))
}
+func TestHashInterface(t *testing.T) {
+ testhash.TestHash(t, func() hash.Hash { return NewIEEE() })
+}
+
type test struct {
ieee, castagnoli uint32
in string
import (
"encoding"
+ "hash"
+ "internal/testhash"
"io"
"testing"
)
+func TestCRC64Hash(t *testing.T) {
+ testhash.TestHash(t, func() hash.Hash { return New(MakeTable(ISO)) })
+}
+
type test struct {
outISO uint64
outECMA uint64
"encoding"
"encoding/binary"
"hash"
+ "internal/testhash"
"io"
"testing"
)
+func TestHashInterface(t *testing.T) {
+ type test struct {
+ name string
+ fn func() hash.Hash
+ }
+ fn32 := func(fn func() hash.Hash32) func() hash.Hash {
+ return func() hash.Hash { return fn() }
+ }
+ fn64 := func(fn func() hash.Hash64) func() hash.Hash {
+ return func() hash.Hash { return fn() }
+ }
+ tests := []test{
+ {"32", fn32(New32)},
+ {"32a", fn32(New32a)},
+ {"64", fn64(New64)},
+ {"64a", fn64(New64a)},
+ {"128", New128},
+ {"128a", New128a},
+ }
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ testhash.TestHash(t, test.fn)
+ })
+ }
+}
+
type golden struct {
out []byte
in string
"fmt"
"hash"
"internal/asan"
+ "internal/testhash"
"math"
"reflect"
"strings"
var _ hash.Hash = &Hash{}
var _ hash.Hash64 = &Hash{}
+func TestHashInterface(t *testing.T) {
+ testhash.TestHash(t, func() hash.Hash { return new(Hash) })
+}
+
func benchmarkSize(b *testing.B, size int) {
h := &Hash{}
buf := make([]byte, size)