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) } }