mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
utils: oshash: add tests (#1285)
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
46
pkg/utils/oshash_internal_test.go
Normal file
46
pkg/utils/oshash_internal_test.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
// Note that the public API returns "" instead.
|
||||
func TestOshashEmpty(t *testing.T) {
|
||||
var size int64 = 0
|
||||
head := make([]byte, chunkSize)
|
||||
tail := make([]byte, chunkSize)
|
||||
want := "0000000000000000"
|
||||
got, err := oshash(size, head, tail)
|
||||
if err != nil {
|
||||
t.Errorf("TestOshashEmpty: Error from oshash: %w", err)
|
||||
}
|
||||
if got != want {
|
||||
t.Errorf("TestOshashEmpty: oshash(0, 0, 0) = %q; want %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
// As oshash sums byte values, causing collisions is trivial.
|
||||
func TestOshashCollisions(t *testing.T) {
|
||||
buf1 := []byte("this is dumb")
|
||||
buf2 := []byte("dumb is this")
|
||||
var size int64 = int64(len(buf1))
|
||||
head := make([]byte, chunkSize)
|
||||
|
||||
tail1 := make([]byte, chunkSize)
|
||||
copy(tail1[len(tail1)-len(buf1):], buf1)
|
||||
hash1, err := oshash(size, head, tail1)
|
||||
if err != nil {
|
||||
t.Errorf("TestOshashCollisions: Error from oshash: %v", err)
|
||||
}
|
||||
|
||||
tail2 := make([]byte, chunkSize)
|
||||
copy(tail2[len(tail2)-len(buf2):], buf2)
|
||||
hash2, err := oshash(size, head, tail2)
|
||||
if err != nil {
|
||||
t.Errorf("TestOshashCollisions: Error from oshash: %v", err)
|
||||
}
|
||||
|
||||
if hash1 != hash2 {
|
||||
t.Errorf("TestOshashCollisions: oshash(n, k, ... %v) =! oshash(n, k, ... %v)", buf1, buf2)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user