summaryrefslogtreecommitdiff
path: root/tests/mcpc_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mcpc_test.c')
-rw-r--r--tests/mcpc_test.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/mcpc_test.c b/tests/mcpc_test.c
new file mode 100644
index 0000000..b0d317e
--- /dev/null
+++ b/tests/mcpc_test.c
@@ -0,0 +1,41 @@
+#include <mcpc/mcpc.h>
+
+#include <stdio.h>
+
+#include "support/test.h"
+
+static void
+empty_callback(const mcpc_tool_t *tool, mcpc_ucbr_t *result)
+{
+ (void)tool;
+ mcpc_toolcall_result_add_text_printf8(result, (const char8_t *)"{}");
+}
+
+int
+main(void)
+{
+ tiny_test_state_t state = { "mcpc fork", 0, 0 };
+ FILE *input = tmpfile();
+ FILE *output = tmpfile();
+ mcpc_server_t *server;
+ mcpc_tool_t *tool;
+ mcpc_toolprop_t *property;
+ TINY_EXPECT(&state, input != NULL && output != NULL);
+ server = mcpc_server_new_iostrm(input, output);
+ TINY_EXPECT(&state, server != NULL);
+ tool = mcpc_tool_new2((const char8_t *)"test", (const char8_t *)"test tool");
+ TINY_EXPECT(&state, tool != NULL);
+ TINY_EXPECT(&state, mcpc_server_add_tool(server, tool) == MCPC_EC_BUG);
+ TINY_EXPECT(&state, mcpc_tool_set_call_cb(tool, empty_callback) == MCPC_EC_0);
+
+ property = mcpc_toolprop_new2((const char8_t *)"limit", (const char8_t *)"limit", MCPC_I32);
+ TINY_EXPECT(&state, property != NULL && mcpc_toolprop_is_required(property));
+ TINY_EXPECT(&state, mcpc_toolprop_set_required(property, false) == MCPC_EC_0);
+ TINY_EXPECT(&state, !mcpc_toolprop_is_required(property));
+ mcpc_tool_add_toolprop(tool, property);
+ TINY_EXPECT(&state, mcpc_server_add_tool(server, tool) == MCPC_EC_0);
+ TINY_EXPECT(&state, mcpc_server_close(server) == MCPC_EC_0);
+ fclose(input);
+ fclose(output);
+ return tiny_test_finish(&state);
+}