Files
2026-07-13 12:49:10 +08:00

79 lines
1.9 KiB
Go

/*
* Copyright 2025 CloudWeGo Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package deep
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/cloudwego/eino/adk"
"github.com/cloudwego/eino/schema"
)
func TestTaskTool(t *testing.T) {
a1 := &myAgent{name: "1", desc: "desc of my agent 1"}
a2 := &myAgent{name: "2", desc: "desc of my agent 2"}
ctx := context.Background()
tt, err := typedNewTaskTool(
ctx,
nil,
[]adk.Agent{a1, a2},
true,
nil,
"",
adk.ToolsConfig{},
10,
nil,
nil,
nil,
)
assert.NoError(t, err)
info, err := tt.Info(ctx)
assert.NoError(t, err)
assert.Contains(t, info.Desc, "desc of my agent 1")
result, err := tt.InvokableRun(ctx, `{"subagent_type":"1"}`)
assert.NoError(t, err)
assert.Equal(t, "desc of my agent 1", result)
result, err = tt.InvokableRun(ctx, `{"subagent_type":"2"}`)
assert.NoError(t, err)
assert.Equal(t, "desc of my agent 2", result)
}
type myAgent struct {
name string
desc string
}
func (m *myAgent) Name(_ context.Context) string {
return m.name
}
func (m *myAgent) Description(_ context.Context) string {
return m.desc
}
func (m *myAgent) Run(_ context.Context, _ *adk.AgentInput, _ ...adk.AgentRunOption) *adk.AsyncIterator[*adk.AgentEvent] {
iter, gen := adk.NewAsyncIteratorPair[*adk.AgentEvent]()
gen.Send(adk.EventFromMessage(schema.UserMessage(m.desc), nil, schema.User, ""))
gen.Close()
return iter
}