git-subtree-dir: x git-subtree-mainline: 7d05a6ee8f44b314fa697a427439e5fa4d78c3d7 git-subtree-split: a10a11b9d371f36b7c3510da32a1d70b74e27bd1
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package blobstore
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseID(t *testing.T) {
|
|
const valid = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
var invalid = strings.Repeat("\x00", HashSize*2)
|
|
|
|
cases := []struct {
|
|
in string
|
|
want string
|
|
}{
|
|
{"", invalid},
|
|
{"sha256-", invalid},
|
|
{"sha256-" + valid, valid},
|
|
|
|
{"" + valid, invalid}, // no prefix
|
|
{"sha123-" + valid, invalid}, // invalid prefix
|
|
{"sha256-" + valid[1:], invalid}, // too short
|
|
{"sha256-" + valid + "a", invalid}, // too long
|
|
{"sha256-!" + valid[1:], invalid}, // invalid hex
|
|
}
|
|
|
|
for _, tt := range cases {
|
|
t.Run("", func(t *testing.T) {
|
|
// sanity check
|
|
if len(tt.want) > HashSize*2 {
|
|
panic("invalid test")
|
|
}
|
|
|
|
got := ParseID(tt.in)
|
|
|
|
wantValid := tt.want != invalid
|
|
if wantValid {
|
|
if !got.Valid() {
|
|
t.Errorf("ParseID(%q).Valid() = false; want true", tt.in)
|
|
}
|
|
if got.String() != "sha256-"+tt.want {
|
|
t.Errorf("ParseID(%q).String() = %q; want %q", tt.in, got.String(), "sha256-"+tt.want)
|
|
}
|
|
} else {
|
|
if got.Valid() {
|
|
t.Errorf("ParseID(%q).Valid() = true; want false", tt.in)
|
|
}
|
|
if got.String() != "" {
|
|
t.Errorf("ParseID(%q).String() = %q; want %q", tt.in, got.String(), "")
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|