Files
encryptx/sha512x/sha512x_test.go
2025-11-03 23:40:41 +08:00

81 lines
1.8 KiB
Go

package sha512x
import (
"strings"
"testing"
)
func TestSha512(t *testing.T) {
// 测试基本功能
input := "hello world"
hash := Sha512(input)
// SHA512应该产生128字符的十六进制字符串
if len(hash) != 128 {
t.Errorf("SHA512哈希长度错误,期望: 128, 实际: %d", len(hash))
}
// 相同输入应该产生相同输出
hash2 := Sha512(input)
if hash != hash2 {
t.Errorf("相同输入产生了不同的哈希: %s vs %s", hash, hash2)
}
// 不同输入应该产生不同输出
hash3 := Sha512("different input")
if hash == hash3 {
t.Errorf("不同输入产生了相同的哈希")
}
}
func TestSha512Consistency(t *testing.T) {
// 测试一致性
input := "test string"
// 多次计算应该得到相同结果
hash1 := Sha512(input)
hash2 := Sha512(input)
hash3 := Sha512(input)
if hash1 != hash2 || hash2 != hash3 {
t.Errorf("多次计算应该得到相同的哈希")
}
}
func TestSha512EdgeCases(t *testing.T) {
// 空字符串
emptyHash := Sha512("")
if len(emptyHash) != 128 {
t.Errorf("空字符串的SHA512哈希长度错误,期望: 128, 实际: %d", len(emptyHash))
}
// 长字符串
longString := strings.Repeat("a", 10000)
longHash := Sha512(longString)
if len(longHash) != 128 {
t.Errorf("长字符串的SHA512哈希长度错误,期望: 128, 实际: %d", len(longHash))
}
// 特殊字符
specialChars := Sha512("!@#$%^&*()_+-=[]{}|;':\",./<>?")
if len(specialChars) != 128 {
t.Errorf("特殊字符的SHA512哈希长度错误,期望: 128, 实际: %d", len(specialChars))
}
}
func BenchmarkSha512(b *testing.B) {
input := "benchmark test string"
b.ResetTimer()
for i := 0; i < b.N; i++ {
Sha512(input)
}
}
func BenchmarkSha512Long(b *testing.B) {
input := strings.Repeat("benchmark test string ", 100) // 约2.5KB
b.ResetTimer()
for i := 0; i < b.N; i++ {
Sha512(input)
}
}