84 lines
1.9 KiB
Go
84 lines
1.9 KiB
Go
package model
|
|
|
|
import "testing"
|
|
|
|
// - test scan
|
|
// - test marshal text
|
|
// - test unmarshal text
|
|
// - test log value
|
|
// - test string
|
|
// - test type
|
|
// - test digest
|
|
// - test valid
|
|
// - test driver valuer
|
|
// - test sql scanner
|
|
// - test parse digest
|
|
|
|
var testDigests = map[string]Digest{
|
|
"": {},
|
|
"sha256-1234": {s: "sha256-1234"},
|
|
"sha256-5678": {s: "sha256-5678"},
|
|
"blake2-9abc": {s: "blake2-9abc"},
|
|
"-1234": {},
|
|
"sha256-": {},
|
|
"sha256-1234-5678": {},
|
|
"sha256-P": {}, // invalid hex
|
|
"sha256-1234P": {},
|
|
"---": {},
|
|
}
|
|
|
|
func TestDigestParse(t *testing.T) {
|
|
// Test cases.
|
|
for s, want := range testDigests {
|
|
got := ParseDigest(s)
|
|
t.Logf("ParseDigest(%q) = %#v", s, got)
|
|
if got != want {
|
|
t.Errorf("ParseDigest(%q) = %q; want %q", s, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDigestString(t *testing.T) {
|
|
// Test cases.
|
|
for s, d := range testDigests {
|
|
want := s
|
|
if !d.IsValid() {
|
|
want = ""
|
|
}
|
|
got := d.String()
|
|
if got != want {
|
|
t.Errorf("ParseDigest(%q).String() = %q; want %q", s, got, want)
|
|
}
|
|
|
|
got = ParseDigest(s).String()
|
|
if got != want {
|
|
t.Errorf("roundtrip ParseDigest(%q).String() = %q; want %q", s, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDigestUnmarshalText(t *testing.T) {
|
|
const testDigest = "sha256-1234"
|
|
t.Run("UnmarshalText (into Valid)", func(t *testing.T) {
|
|
d := ParseDigest(testDigest)
|
|
if !d.IsValid() {
|
|
panic("invalid test")
|
|
}
|
|
if err := d.UnmarshalText(nil); err == nil {
|
|
t.Errorf("UnmarshalText on valid Digest did not return error")
|
|
}
|
|
if d.String() != testDigest {
|
|
t.Errorf("UnmarshalText on valid Digest changed Digest: %q", d.String())
|
|
}
|
|
})
|
|
t.Run("UnmarshalText make safe copy", func(t *testing.T) {
|
|
data := []byte(testDigest)
|
|
var d Digest
|
|
d.UnmarshalText(data)
|
|
data[0] = 'x'
|
|
if d.String() != testDigest {
|
|
t.Errorf("UnmarshalText did not make a safe copy")
|
|
}
|
|
})
|
|
}
|