parse_tool_calls_test.go 826 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package chat
  2. import (
  3. "encoding/json"
  4. "testing"
  5. )
  6. func TestStripThinking(t *testing.T) {
  7. r, c := StripThinking("<think>hi</think>\n\nhello")
  8. if r != "hi" {
  9. t.Fatalf("reasoning=%q", r)
  10. }
  11. if c != "hello" {
  12. t.Fatalf("content=%q", c)
  13. }
  14. }
  15. func TestStripThinking_Truncated(t *testing.T) {
  16. _, c := StripThinking("before<think>this is truncated")
  17. if c != "before" {
  18. t.Fatalf("content=%q", c)
  19. }
  20. }
  21. func TestExtractToolCalls(t *testing.T) {
  22. args, _ := json.Marshal(map[string]any{"x": 1})
  23. s := "before<tool_call>\n{\"name\":\"f\",\"arguments\":" + string(args) + "}\n</tool_call>after"
  24. content, calls, err := ExtractToolCalls(s)
  25. if err != nil {
  26. t.Fatal(err)
  27. }
  28. if content != "beforeafter" {
  29. t.Fatalf("content=%q", content)
  30. }
  31. if len(calls) != 1 || calls[0].Name != "f" {
  32. t.Fatalf("calls=%+v", calls)
  33. }
  34. }