pdqhash-go

git clone git://archive.git.mtrnord.blog/MTRNord/pdqhash-go.git
Log | Files | Refs | LICENSE

commit 53aa5e53af1146debcd9904e8ce60545551f24c3
parent bc039d3e306519cdf6626d6fe492bf8ced3677d5
Author: MTRNord <mtrnord1@gmail.com>
Date:   Sun, 25 Feb 2024 08:38:11 +0100

Improve readability of tests

Diffstat:
Mgo.mod | 5+++--
Mgo.sum | 9+++++++++
Mtypes/hash256_test.go | 109+++++++++++++++++++++++--------------------------------------------------------
3 files changed, 44 insertions(+), 79 deletions(-)

diff --git a/go.mod b/go.mod @@ -5,15 +5,16 @@ go 1.21.7 require ( github.com/davidbyttow/govips/v2 v2.13.0 github.com/h2non/filetype v1.1.3 - github.com/stretchr/testify v1.6.1 + github.com/stretchr/testify v1.8.4 golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect golang.org/x/image v0.15.0 // indirect golang.org/x/net v0.21.0 // indirect golang.org/x/text v0.14.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum @@ -13,8 +13,15 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -56,3 +63,5 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLF gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/types/hash256_test.go b/types/hash256_test.go @@ -1,150 +1,105 @@ package types import ( - "strings" "testing" + + "github.com/stretchr/testify/assert" ) const SAMPLE_HASH = "9c151c3af838278e3ef57c180c7d031c07aefd12f2ccc1e18f2a1e1c7d0ff163" func TestIncorrectHexLength(t *testing.T) { _, err := Hash256FromHexString("AAA") - if !strings.HasPrefix(err.Error(), "incorrect hash length") { - t.Errorf("Incorrect error message: %s", err) - } + assert.ErrorContains(t, err, "incorrect hash length") } func TestIncorrectHexFormat(t *testing.T) { _, err := Hash256FromHexString("9c151c3af838278e3ef57c180c7d031c07aefd12f2ccc1e18f2a1e1c7d0ff16!") - if !strings.HasPrefix(err.Error(), "incorrect format") { - t.Errorf("Incorrect error message: %s", err) - } + assert.ErrorContains(t, err, "incorrect format") } func TestCorrectHexFormat(t *testing.T) { hash, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } - if hash.String() != SAMPLE_HASH { - t.Errorf("Incorrect hash: %s", hash.String()) - } + assert.ErrorIs(t, err, nil) + + assert.Equal(t, SAMPLE_HASH, hash.String()) } func TestClone(t *testing.T) { hash, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } + assert.ErrorIs(t, err, nil) + clone := hash.Clone() - if clone.String() != SAMPLE_HASH { - t.Errorf("Incorrect hash: %s", clone.String()) - } - if !hash.Eq(&clone) { - t.Errorf("Incorrect equality") - } + assert.Equal(t, SAMPLE_HASH, clone.String()) + + assert.True(t, hash.Eq(&clone)) } func TestToString(t *testing.T) { hash, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } - if hash.String() != SAMPLE_HASH { - t.Errorf("Incorrect hash: %s", hash.String()) - } + assert.ErrorIs(t, err, nil) + + assert.Equal(t, SAMPLE_HASH, hash.String()) } func TestBitCount(t *testing.T) { - if BitCount(1) != 1 { - t.Errorf("Incorrect bit count") - } + assert.Equal(t, 1, BitCount(1)) // dec(10) = bin(01100100) - if BitCount(100) != 3 { - t.Errorf("Incorrect bit count") - } + assert.Equal(t, 3, BitCount(100)) } func TestHammingNorm(t *testing.T) { hash := &Hash256{} hash.SetAll() - if hash.HammingNorm() != 256 { - t.Errorf("Incorrect hamming norm") - } - hash, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } + assert.Equal(t, 256, hash.HammingNorm()) - if hash.HammingNorm() != 128 { - t.Errorf("Incorrect hamming norm") - } + hash, err := Hash256FromHexString(SAMPLE_HASH) + assert.ErrorIs(t, err, nil) + assert.Equal(t, 128, hash.HammingNorm()) } func TestHammingDistance(t *testing.T) { hash1, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } + assert.ErrorIs(t, err, nil) hash2 := Hash256{} hash2.ClearAll() - if hash1.HammingDistance(&hash2) != 128 { - t.Errorf("Incorrect hamming distance") - } + assert.Equal(t, 128, hash1.HammingDistance(&hash2)) hash1 = &Hash256{} hash1.SetAll() hash2 = Hash256{} hash2.ClearAll() - if hash1.HammingDistance(&hash2) != 256 { - t.Errorf("Incorrect hamming distance") - } - if hash1.HammingDistanceLE(&hash2, 1) { - t.Errorf("Incorrect hamming distance") - } - if !hash1.HammingDistanceLE(&hash2, 257) { - t.Errorf("Incorrect hamming distance") - } - if !hash1.HammingDistanceLE(hash1, 0) { - t.Errorf("Incorrect hamming distance") - } + assert.Equal(t, 256, hash1.HammingDistance(&hash2)) + assert.False(t, hash1.HammingDistanceLE(&hash2, 1)) + assert.True(t, hash1.HammingDistanceLE(&hash2, 257)) + assert.True(t, hash1.HammingDistanceLE(hash1, 0)) } func TestBinaryOperations(t *testing.T) { hash, err := Hash256FromHexString(SAMPLE_HASH) - if err != nil { - t.Errorf("Error: %s", err) - } + assert.ErrorIs(t, err, nil) result := hash.BitwiseAND(hash) hash2 := &result - if !hash2.Eq(hash) { - t.Errorf("Incorrect AND") - } + assert.True(t, hash2.Eq(hash)) hashNegative := hash.BitwiseNOT() result = hash.BitwiseAND(&hashNegative) hash2 = &result hash3 := &Hash256{} - if !hash2.Eq(hash3) { - t.Errorf("Incorrect NOT") - } + assert.True(t, hash2.Eq(hash3)) hash_set_all := &Hash256{} hash_set_all.SetAll() result = hash.BitwiseOR(&hashNegative) - if !result.Eq(hash_set_all) { - t.Errorf("Incorrect OR with SET ALL") - } + assert.True(t, result.Eq(hash_set_all)) result = hash.BitwiseXOR(&hashNegative) - if !result.Eq(hash_set_all) { - t.Errorf("Incorrect XOR with SET ALL") - } + assert.True(t, result.Eq(hash_set_all)) }