diff options
Diffstat (limited to 'tests/mcpc_test.c')
| -rw-r--r-- | tests/mcpc_test.c | 41 |
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); +} |
