diff options
| author | Arun Isaac | 2026-05-17 19:36:41 +0100 |
|---|---|---|
| committer | Arun Isaac | 2026-05-17 23:10:17 +0100 |
| commit | a47a9e899383fba7e3488ae9d494af9caf0492fa (patch) | |
| tree | 7c71412828440ff0537456eec1580223a4f69eea /tests | |
| parent | 3414bec6245100e809ce6a24a5a4095e8fcd51ef (diff) | |
| download | kaagum-a47a9e899383fba7e3488ae9d494af9caf0492fa.tar.gz kaagum-a47a9e899383fba7e3488ae9d494af9caf0492fa.tar.lz kaagum-a47a9e899383fba7e3488ae9d494af9caf0492fa.zip | |
Check types of tool call arguments.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/tools.scm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/tools.scm b/tests/tools.scm new file mode 100644 index 0000000..1ad0c62 --- /dev/null +++ b/tests/tools.scm @@ -0,0 +1,46 @@ +;;; kaagum --- Tiny, security-focused AI agent in Guile +;;; Copyright © 2026 Arun Isaac <arunisaac@systemreboot.net> +;;; +;;; This file is part of kaagum. +;;; +;;; kaagum is free software: you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation, either version 3 of the License, or +;;; (at your option) any later version. +;;; +;;; kaagum is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with kaagum. If not, see <https://www.gnu.org/licenses/>. + +(use-modules (srfi srfi-64) + (kaagum tools)) + +(test-begin "tools") + +(test-equal "tool call with parameter type mismatch must error out" + "Error: Argument arg of invalid type" + (guard (c ((tool-call-parse-failure? c) + (tool-call-parse-failure-message c))) + (spec->tool-call "foo" + "/foo/bar" + `(("read" . ,(tool #:description "A dummy test tool" + #:parameters `(("arg" . ,(tool-parameter + #:description "an argument" + #:type "integer" + #:required? #t))) + #:proc identity + #:title identity + #:kind "read"))) + (list "read") + (list) + `(("id" . "foo123") + ("type" . "function") + ("function" + ("name" . "read") + ("arguments" . "{\"arg\": \"[738\"}")))))) + +(test-end "tools") |
