Skip to content

Commit b24d87f

Browse files
committed
restore flexible optional arg ordering tests
1 parent a8e5523 commit b24d87f

1 file changed

Lines changed: 41 additions & 3 deletions

File tree

tests/test-chat.cpp

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2404,19 +2404,57 @@ static void test_template_output_peg_parsers(bool detailed_debug) {
24042404
.expect_reconstruction()
24052405
.run();
24062406

2407-
// Test optional argument ordering (2 required + 4 optional)
2407+
// Test flexible optional argument ordering (2 required + 4 optional, reversed optional order)
24082408
tst.test(
24092409
"<tool_call>\n"
24102410
"<function=tool_2req_4opt>\n"
24112411
"<parameter=req1>\nhello\n</parameter>\n"
24122412
"<parameter=req2>\n42\n</parameter>\n"
2413-
"<parameter=opt2>\n200\n</parameter>\n"
24142413
"<parameter=opt4>\n100\n</parameter>\n"
2414+
"<parameter=opt2>\n200\n</parameter>\n"
24152415
"</function>\n"
24162416
"</tool_call>")
24172417
.tools({ tool_2req_4opt })
24182418
.expect_tool_calls({
2419-
{ "tool_2req_4opt", R"({"req1": "hello", "req2": 42, "opt2": 200, "opt4": 100})", {} },
2419+
{ "tool_2req_4opt", R"({"req1": "hello", "req2": 42, "opt4": 100, "opt2": 200})", {} },
2420+
})
2421+
.expect_reconstruction()
2422+
.run();
2423+
2424+
// Test flexible optional argument ordering (2 required + 5 optional, reversed optional order)
2425+
tst.test(
2426+
"<tool_call>\n"
2427+
"<function=tool_2req_5opt>\n"
2428+
"<parameter=req1>\nworld\n</parameter>\n"
2429+
"<parameter=req2>\n7\n</parameter>\n"
2430+
"<parameter=opt5>\nlast\n</parameter>\n"
2431+
"<parameter=opt3>\nmiddle\n</parameter>\n"
2432+
"<parameter=opt1>\nfirst\n</parameter>\n"
2433+
"</function>\n"
2434+
"</tool_call>")
2435+
.tools({ tool_2req_5opt })
2436+
.expect_tool_calls({
2437+
{ "tool_2req_5opt", R"({"req1": "world", "req2": 7, "opt5": "last", "opt3": "middle", "opt1": "first"})", {} },
2438+
})
2439+
.expect_reconstruction()
2440+
.run();
2441+
2442+
// Test flexible optional argument ordering (2 required + 5 optional, all 5 in shuffled order)
2443+
tst.test(
2444+
"<tool_call>\n"
2445+
"<function=tool_2req_5opt>\n"
2446+
"<parameter=req1>\ntest\n</parameter>\n"
2447+
"<parameter=req2>\n99\n</parameter>\n"
2448+
"<parameter=opt3>\nc\n</parameter>\n"
2449+
"<parameter=opt1>\na\n</parameter>\n"
2450+
"<parameter=opt5>\ne\n</parameter>\n"
2451+
"<parameter=opt4>\n4\n</parameter>\n"
2452+
"<parameter=opt2>\n2\n</parameter>\n"
2453+
"</function>\n"
2454+
"</tool_call>")
2455+
.tools({ tool_2req_5opt })
2456+
.expect_tool_calls({
2457+
{ "tool_2req_5opt", R"({"req1": "test", "req2": 99, "opt3": "c", "opt1": "a", "opt5": "e", "opt4": 4, "opt2": 2})", {} },
24202458
})
24212459
.expect_reconstruction()
24222460
.run();

0 commit comments

Comments
 (0)