]> Cypherpunks.ru repositories - gostls13.git/commitdiff
hash/maphash: add more tests for seed generation
authorKeith Randall <khr@golang.org>
Mon, 24 Feb 2020 03:23:15 +0000 (19:23 -0800)
committerKeith Randall <khr@golang.org>
Mon, 2 Mar 2020 17:15:20 +0000 (17:15 +0000)
Test all the paths by which a Hash picks its seed.
Make sure they all behave identically to a preset seed.

Change-Id: I2f7950857697f2f07226b96655574c36931b2aae
Reviewed-on: https://go-review.googlesource.com/c/go/+/220686
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Vladimir Evgrafov <evgrafov.vladimir@gmail.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/hash/maphash/maphash_test.go

index 0164a9e20ae48212c553b93d00f9efed4fa7ade2..caea43a8c83bff0c10f7479b3f3a7028e8c4ca92 100644 (file)
@@ -106,6 +106,62 @@ func TestRepeat(t *testing.T) {
        }
 }
 
+func TestSeedFromSum64(t *testing.T) {
+       h1 := new(Hash)
+       h1.WriteString("foo")
+       x := h1.Sum64() // seed generated here
+       h2 := new(Hash)
+       h2.SetSeed(h1.Seed())
+       h2.WriteString("foo")
+       y := h2.Sum64()
+       if x != y {
+               t.Errorf("hashes don't match: want %x, got %x", x, y)
+       }
+}
+
+func TestSeedFromSeed(t *testing.T) {
+       h1 := new(Hash)
+       h1.WriteString("foo")
+       _ = h1.Seed() // seed generated here
+       x := h1.Sum64()
+       h2 := new(Hash)
+       h2.SetSeed(h1.Seed())
+       h2.WriteString("foo")
+       y := h2.Sum64()
+       if x != y {
+               t.Errorf("hashes don't match: want %x, got %x", x, y)
+       }
+}
+
+func TestSeedFromFlush(t *testing.T) {
+       b := make([]byte, 65)
+       h1 := new(Hash)
+       h1.Write(b) // seed generated here
+       x := h1.Sum64()
+       h2 := new(Hash)
+       h2.SetSeed(h1.Seed())
+       h2.Write(b)
+       y := h2.Sum64()
+       if x != y {
+               t.Errorf("hashes don't match: want %x, got %x", x, y)
+       }
+}
+
+func TestSeedFromReset(t *testing.T) {
+       h1 := new(Hash)
+       h1.WriteString("foo")
+       h1.Reset() // seed generated here
+       h1.WriteString("foo")
+       x := h1.Sum64()
+       h2 := new(Hash)
+       h2.SetSeed(h1.Seed())
+       h2.WriteString("foo")
+       y := h2.Sum64()
+       if x != y {
+               t.Errorf("hashes don't match: want %x, got %x", x, y)
+       }
+}
+
 // Make sure a Hash implements the hash.Hash and hash.Hash64 interfaces.
 var _ hash.Hash = &Hash{}
 var _ hash.Hash64 = &Hash{}