- Fix line 67: Change unused variable 'n' to blank identifier '_' - Fix line 102: Correct WriteByte call to expect only error return value (WriteByte returns only error, not (int, error)) These fixes resolve the compilation errors reported by the CI. Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
125 lines
2.7 KiB
Go
125 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"hash/maphash"
|
|
)
|
|
|
|
func main() {
|
|
testHashBasics()
|
|
testMakeSeed()
|
|
testSetSeed()
|
|
testWriteMethods()
|
|
testBytes()
|
|
testString()
|
|
}
|
|
|
|
func testHashBasics() {
|
|
fmt.Println("=== Test Hash Basics ===")
|
|
var h maphash.Hash
|
|
n, err := h.WriteString("hello")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteString failed: %v", err))
|
|
}
|
|
if n != 5 {
|
|
panic(fmt.Sprintf("WriteString returned %d, expected 5", n))
|
|
}
|
|
hash1 := h.Sum64()
|
|
fmt.Printf("Hash of 'hello': 0x%x\n", hash1)
|
|
|
|
h.Reset()
|
|
n, err = h.WriteString("world")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteString failed: %v", err))
|
|
}
|
|
hash2 := h.Sum64()
|
|
fmt.Printf("Hash of 'world': 0x%x\n", hash2)
|
|
|
|
h.Reset()
|
|
n, err = h.WriteString("hello")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteString failed: %v", err))
|
|
}
|
|
hash3 := h.Sum64()
|
|
if hash1 != hash3 {
|
|
panic(fmt.Sprintf("Hash mismatch: 0x%x != 0x%x", hash1, hash3))
|
|
}
|
|
fmt.Printf("Hash consistency verified: 0x%x == 0x%x\n", hash1, hash3)
|
|
}
|
|
|
|
func testMakeSeed() {
|
|
fmt.Println("\n=== Test MakeSeed ===")
|
|
seed1 := maphash.MakeSeed()
|
|
seed2 := maphash.MakeSeed()
|
|
fmt.Printf("Seed 1: %v\n", seed1)
|
|
fmt.Printf("Seed 2: %v\n", seed2)
|
|
if seed1 == seed2 {
|
|
fmt.Println("Warning: Seeds are identical (rare but possible)")
|
|
}
|
|
}
|
|
|
|
func testSetSeed() {
|
|
fmt.Println("\n=== Test SetSeed ===")
|
|
var h1, h2 maphash.Hash
|
|
seed := maphash.MakeSeed()
|
|
|
|
h1.SetSeed(seed)
|
|
_, err := h1.WriteString("test")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteString failed: %v", err))
|
|
}
|
|
hash1 := h1.Sum64()
|
|
|
|
h2.SetSeed(seed)
|
|
_, err = h2.WriteString("test")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteString failed: %v", err))
|
|
}
|
|
hash2 := h2.Sum64()
|
|
|
|
if hash1 != hash2 {
|
|
panic(fmt.Sprintf("Hashes with same seed should match: 0x%x != 0x%x", hash1, hash2))
|
|
}
|
|
fmt.Printf("Same seed produces same hash: 0x%x == 0x%x\n", hash1, hash2)
|
|
}
|
|
|
|
func testWriteMethods() {
|
|
fmt.Println("\n=== Test Write Methods ===")
|
|
var h maphash.Hash
|
|
|
|
data := []byte("hello")
|
|
n, err := h.Write(data)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Write failed: %v", err))
|
|
}
|
|
if n != len(data) {
|
|
panic(fmt.Sprintf("Write returned %d, expected %d", n, len(data)))
|
|
}
|
|
hash1 := h.Sum64()
|
|
fmt.Printf("Hash after Write: 0x%x\n", hash1)
|
|
|
|
h.Reset()
|
|
err = h.WriteByte('A')
|
|
if err != nil {
|
|
panic(fmt.Sprintf("WriteByte failed: %v", err))
|
|
}
|
|
hash2 := h.Sum64()
|
|
fmt.Printf("Hash after WriteByte('A'): 0x%x\n", hash2)
|
|
}
|
|
|
|
func testBytes() {
|
|
fmt.Println("\n=== Test Bytes Function ===")
|
|
seed := maphash.MakeSeed()
|
|
data := []byte("test data")
|
|
hash := maphash.Bytes(seed, data)
|
|
fmt.Printf("Bytes hash: 0x%x\n", hash)
|
|
}
|
|
|
|
func testString() {
|
|
fmt.Println("\n=== Test String Function ===")
|
|
seed := maphash.MakeSeed()
|
|
str := "test string"
|
|
hash := maphash.String(seed, str)
|
|
fmt.Printf("String hash: 0x%x\n", hash)
|
|
}
|