var fixedSeed …
func TestSmhasherSanity(t *testing.T) { … }
func bytesHash(b []byte) uint64 { … }
func stringHash(s string) uint64 { … }
const hashSize …
func randBytes(r *rand.Rand, b []byte) { … }
type hashSet …
func newHashSet() *hashSet { … }
func (s *hashSet) add(h uint64) { … }
func (s *hashSet) addS(x string) { … }
func (s *hashSet) addB(x []byte) { … }
func (s *hashSet) addS_seed(x string, seed Seed) { … }
func (s *hashSet) check(t *testing.T) { … }
func TestSmhasherAppendedZeros(t *testing.T) { … }
func TestSmhasherSmallKeys(t *testing.T) { … }
func TestSmhasherZeros(t *testing.T) { … }
func TestSmhasherTwoNonzero(t *testing.T) { … }
func twoNonZero(h *hashSet, n int) { … }
func TestSmhasherCyclic(t *testing.T) { … }
func TestSmhasherSparse(t *testing.T) { … }
func sparse(t *testing.T, h *hashSet, n int, k int) { … }
func setbits(h *hashSet, b []byte, i int, k int) { … }
func TestSmhasherPermutation(t *testing.T) { … }
func permutation(t *testing.T, h *hashSet, s []uint32, n int) { … }
func genPerm(h *hashSet, b []byte, s []uint32, n int) { … }
type key …
type bytesKey …
func (k *bytesKey) clear() { … }
func (k *bytesKey) random(r *rand.Rand) { … }
func (k *bytesKey) bits() int { … }
func (k *bytesKey) flipBit(i int) { … }
func (k *bytesKey) hash() uint64 { … }
func (k *bytesKey) name() string { … }
func TestSmhasherAvalanche(t *testing.T) { … }
func avalancheTest1(t *testing.T, k key) { … }
func TestSmhasherWindowed(t *testing.T) { … }
func windowed(t *testing.T, k key) { … }
func TestSmhasherText(t *testing.T) { … }
func text(t *testing.T, h *hashSet, prefix, suffix string) { … }
func TestSmhasherSeed(t *testing.T) { … }