package core import "testing" // TestXXH32Vectors 对照 xxHash 参考实现的公开测试向量, 验证纯 Go 实现逐位一致。 // 这三个向量 (空串/"a"/"abc") 是 xxHash 官方文档与多个独立实现共同引用的标准值。 func TestXXH32Vectors(t *testing.T) { cases := []struct { in string want uint32 }{ {"", 0x02CC5D05}, {"a", 0x550D7456}, {"abc", 0x32D153FF}, } for _, c := range cases { if got := XXH32([]byte(c.in)); got != c.want { t.Errorf("XXH32(%q) = %08x, 想要 %08x", c.in, got, c.want) } } } // TestXXH32StripePath 跨 16 字节条纹阈值的输入 (验证四累加器路径与尾部路径的组合), // 钉死"同输入必得同值"的确定性 + 单比特雪崩敏感性。 func TestXXH32StripePath(t *testing.T) { long := make([]byte, 4096) for i := range long { long[i] = byte(i * 7) } if XXH32(long) != XXH32(long) { t.Fatal("XXH32 非确定性") } b := make([]byte, 4096) copy(b, long) b[2048] ^= 0x01 if XXH32(long) == XXH32(b) { t.Fatal("单比特翻转未改变 CRC —— 雪崩失效") } // 4KB 固定输入的回归锚: 算法正确性由上方官方向量背书 (尾部/空输入路径), // 此处钉死条纹路径 (>=16B 四累加器) 的实现值, 任何实现漂移立即暴露。 const ref = 0xC1FF0304 if got := XXH32(long); got != ref { t.Errorf("XXH32(4KB pattern) = %08x, 想要 %08x —— 条纹路径实现漂移", got, ref) } }