Files
Cyrene_v2/plugins/tools/basic/register_test.go
T

78 lines
2.1 KiB
Go

package basic
import (
"testing"
"git.yeij.top/AskaEth/Cyrene_v2/internal/capability/registry"
"git.yeij.top/AskaEth/Cyrene_v2/pkg/plugins/sdk"
)
// TestTools verifies Tools returns six valid, uniquely-named sdk.Tool values.
func TestTools(t *testing.T) {
t.Parallel()
tools := Tools()
if len(tools) != 6 {
t.Fatalf("Tools() = %d tools, want 6", len(tools))
}
seen := map[string]bool{}
for _, tool := range tools {
if tool.Name() == "" || tool.Description() == "" {
t.Fatalf("tool %q missing Name or Description", tool.Name())
}
params, err := tool.Parameters()
if err != nil {
t.Fatalf("tool %q Parameters() error: %v", tool.Name(), err)
}
if params == nil {
t.Fatalf("tool %q Parameters() returned nil", tool.Name())
}
if seen[tool.Name()] {
t.Fatalf("duplicate tool name %q", tool.Name())
}
seen[tool.Name()] = true
}
}
// TestRegister_Success verifies every tool is registered as a KindTool capability.
func TestRegister_Success(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg); err != nil {
t.Fatalf("Register() error: %v", err)
}
caps := reg.List(registry.KindTool)
if len(caps) != 6 {
t.Fatalf("List(KindTool) = %d, want 6", len(caps))
}
for _, name := range []string{"calculator", "datetime", "random", "text", "json", "markdown"} {
cap, err := reg.Get(name)
if err != nil {
t.Fatalf("Get(%q) error: %v", name, err)
}
if cap.Kind != registry.KindTool {
t.Fatalf("capability %q kind = %v, want tool", name, cap.Kind)
}
if _, ok := cap.Value.(sdk.Tool); !ok {
t.Fatalf("capability %q not an sdk.Tool", name)
}
}
}
// TestRegister_NilRegistry verifies nil registry is rejected.
func TestRegister_NilRegistry(t *testing.T) {
t.Parallel()
err := Register(nil)
assertIs(t, err, sdk.ErrNilRegistrar)
}
// TestRegister_Duplicate verifies a second registration is rejected.
func TestRegister_Duplicate(t *testing.T) {
t.Parallel()
reg := registry.New()
if err := Register(reg); err != nil {
t.Fatalf("first Register() error: %v", err)
}
err := Register(reg)
assertIs(t, err, registry.ErrDuplicate)
}