Files
go-zero/mcp/util_test.go
Kevin Wan b251ce346e feat: mcp server sdk (#4794)
Signed-off-by: kevin <wanjunfeng@gmail.com>
2025-04-27 23:06:37 +08:00

64 lines
1.2 KiB
Go

package mcp
import (
"bufio"
"encoding/json"
"fmt"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestPtr(t *testing.T) {
tests := []struct {
name string
v interface{}
}{
{"string", "test"},
{"int", 42},
{"bool", true},
{"float", 3.14},
{"struct", struct{ Name string }{"test"}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := ptr(tt.v)
assert.NotNil(t, got, "ptr() should not return nil")
assert.Equal(t, tt.v, *got, "dereferenced pointer should equal input value")
})
}
}
type Event struct {
Type string
Data map[string]any
}
func parseEvent(input string) (*Event, error) {
var evt Event
var dataStr string
scanner := bufio.NewScanner(strings.NewReader(input))
for scanner.Scan() {
line := scanner.Text()
if strings.HasPrefix(line, "event:") {
evt.Type = strings.TrimSpace(strings.TrimPrefix(line, "event:"))
} else if strings.HasPrefix(line, "data:") {
dataStr = strings.TrimSpace(strings.TrimPrefix(line, "data:"))
}
}
if err := scanner.Err(); err != nil {
return nil, err
}
if len(dataStr) > 0 {
if err := json.Unmarshal([]byte(dataStr), &evt.Data); err != nil {
return nil, fmt.Errorf("failed to parse data: %w", err)
}
}
return &evt, nil
}