39 lines
956 B
Go
39 lines
956 B
Go
package specid
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseID(t *testing.T) {
|
|
tcases := []struct {
|
|
param string
|
|
expType IDT
|
|
expValue int
|
|
expErr error
|
|
}{
|
|
{param: "al-45", expType: Album, expValue: 45},
|
|
{param: "ar-2", expType: Artist, expValue: 2},
|
|
{param: "tr-43", expType: Track, expValue: 43},
|
|
{param: "al-3", expType: Album, expValue: 3},
|
|
{param: "xx-1", expErr: ErrBadPrefix},
|
|
{param: "1", expErr: ErrBadSeparator},
|
|
{param: "al-howdy", expErr: ErrNotAnInt},
|
|
}
|
|
for _, tcase := range tcases {
|
|
tcase := tcase // pin
|
|
t.Run(tcase.param, func(t *testing.T) {
|
|
act, err := New(tcase.param)
|
|
if !errors.Is(err, tcase.expErr) {
|
|
t.Fatalf("expected err %q, got %q", tcase.expErr, err)
|
|
}
|
|
if act.Value != tcase.expValue {
|
|
t.Errorf("expected value %d, got %d", tcase.expValue, act.Value)
|
|
}
|
|
if act.Type != tcase.expType {
|
|
t.Errorf("expected type %v, got %v", tcase.expType, act.Type)
|
|
}
|
|
})
|
|
}
|
|
}
|