Files
Cyrene_v2/internal/capability/skills/register_test.go
T

57 lines
1.5 KiB
Go

package skills
import (
"errors"
"testing"
"git.yeij.top/AskaEth/Cyrene_v2/internal/capability/registry"
"git.yeij.top/AskaEth/Cyrene_v2/pkg/plugins/sdk"
)
func TestRegister_正常(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg, makeSkill(t, "a"), makeSkill(t, "b")); err != nil {
t.Fatalf("Register: %v", err)
}
cap, err := reg.Get("a")
if err != nil {
t.Fatalf("Get a: %v", err)
}
if cap.Kind != registry.KindSkill {
t.Fatalf("Kind = %q, want %q", cap.Kind, registry.KindSkill)
}
sk, ok := cap.Value.(sdk.Skill)
if !ok {
t.Fatalf("Value is %T, want sdk.Skill", cap.Value)
}
if sk.Name() != "a" || sk.Description() != "desc a" {
t.Fatalf("registered skill = %q/%q, want a/desc a", sk.Name(), sk.Description())
}
}
func TestRegister_NilRegistrar_异常(t *testing.T) {
t.Parallel()
if err := Register(nil, makeSkill(t, "a")); !errors.Is(err, ErrNilRegistrar) {
t.Fatalf("Register(nil) err = %v, want ErrNilRegistrar", err)
}
}
func TestRegister_NilSkill_异常(t *testing.T) {
t.Parallel()
if err := Register(registry.New(), nil); !errors.Is(err, ErrInvalidSkill) {
t.Fatalf("Register(nil skill) err = %v, want ErrInvalidSkill", err)
}
}
func TestRegister_Duplicate_异常(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg, makeSkill(t, "review")); err != nil {
t.Fatalf("first Register: %v", err)
}
if err := Register(reg, makeSkill(t, "review")); !errors.Is(err, registry.ErrDuplicate) {
t.Fatalf("second Register err = %v, want registry.ErrDuplicate", err)
}
}