diff --git a/internal/sha/sha.go b/internal/sha/sha.go index 7830837..978d2bc 100644 --- a/internal/sha/sha.go +++ b/internal/sha/sha.go @@ -13,8 +13,12 @@ var ( ErrInvalidHash = errors.New("invalid hash") ) -func (sha1 SHA1) String() string { - return hex.EncodeToString(sha1) +func (s SHA1) String() string { + return hex.EncodeToString(s) +} + +func (s SHA1) Compare(other SHA1) bool { + return s.String() == other.String() } func ReadHash(hashString string) (SHA1, error) { diff --git a/internal/sha/sha_test.go b/internal/sha/sha_test.go index fb5c71d..4937e33 100644 --- a/internal/sha/sha_test.go +++ b/internal/sha/sha_test.go @@ -1,10 +1,66 @@ package sha import ( + "encoding/hex" "errors" + "strings" "testing" ) +func TestCompare(t *testing.T) { + type args struct { + sha SHA1 + } + type fields struct { + sha SHA1 + } + type test struct { + name string + args args + fields fields + want bool + } + tests := []*test{ + func() *test { + s, _ := hex.DecodeString("87f3c49bccf2597484ece08746d3ee5defaba335") + + return &test{ + name: "success: true", + args: args{ + sha: s, + }, + fields: fields{ + sha: s, + }, + want: true, + } + }(), + func() *test { + s, _ := hex.DecodeString("87f3c49bccf2597484ece08746d3ee5defaba335") + s2, _ := hex.DecodeString(strings.Repeat("0", 40)) + + return &test{ + name: "success: false", + args: args{ + sha: s, + }, + fields: fields{ + sha: s2, + }, + want: false, + } + }(), + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := tt.fields.sha.Compare(tt.args.sha) + if got != tt.want { + t.Errorf("got = %v, want = %v", got, tt.want) + } + }) + } +} + func TestReadHash(t *testing.T) { type args struct { hashString string