Skip to content

Commit 7ac1465

Browse files
committed
fix(tests): update ToolMode conversion tests for conditional ToolChoice behavior
xAI now rejects requests that set ToolChoice when no tools are present in the request. The production code was already updated to gate ToolChoice on request.Tools.Count > 0, but the five AsCompletionsRequest_*ToolMode* tests were still passing an empty tools list and asserting ToolChoice was set. Changes: - Add DummyTool() helper that creates a minimal AIFunction for use in tests - Add Tools = [DummyTool()] to all ToolMode tests so ToolChoice gets set - Add AsCompletionsRequest_NoTools_DoesNotSetToolChoice to explicitly document and verify the new behavior: no tools => no ToolChoice, regardless of ToolMode
1 parent 7d6fdb0 commit 7ac1465

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

src/xAI.Tests/GrokConversionTests.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,22 @@ static IGrokChatClient CreateClient()
285285
return mock.Object;
286286
}
287287

288+
static AITool DummyTool() => AIFunctionFactory.Create(() => "", "dummy", "A dummy tool");
289+
288290
[Fact]
289-
public void AsCompletionsRequest_NullToolMode_SetsAutoToolChoice()
291+
public void AsCompletionsRequest_NoTools_DoesNotSetToolChoice()
290292
{
293+
// xAI rejects ToolChoice when no tools are present
291294
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = null });
292295

296+
Assert.Null(request.ToolChoice);
297+
}
298+
299+
[Fact]
300+
public void AsCompletionsRequest_NullToolMode_SetsAutoToolChoice()
301+
{
302+
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = null, Tools = [DummyTool()] });
303+
293304
Assert.NotNull(request.ToolChoice);
294305
Assert.True(request.ToolChoice.HasMode);
295306
Assert.Equal(Protocol.ToolMode.Auto, request.ToolChoice.Mode);
@@ -298,7 +309,7 @@ public void AsCompletionsRequest_NullToolMode_SetsAutoToolChoice()
298309
[Fact]
299310
public void AsCompletionsRequest_AutoToolMode_SetsAutoToolChoice()
300311
{
301-
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.Auto });
312+
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.Auto, Tools = [DummyTool()] });
302313

303314
Assert.NotNull(request.ToolChoice);
304315
Assert.True(request.ToolChoice.HasMode);
@@ -308,7 +319,7 @@ public void AsCompletionsRequest_AutoToolMode_SetsAutoToolChoice()
308319
[Fact]
309320
public void AsCompletionsRequest_NoneToolMode_SetsNoneToolChoice()
310321
{
311-
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.None });
322+
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.None, Tools = [DummyTool()] });
312323

313324
Assert.NotNull(request.ToolChoice);
314325
Assert.True(request.ToolChoice.HasMode);
@@ -318,7 +329,7 @@ public void AsCompletionsRequest_NoneToolMode_SetsNoneToolChoice()
318329
[Fact]
319330
public void AsCompletionsRequest_RequireAnyToolMode_SetsRequiredToolChoice()
320331
{
321-
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.RequireAny });
332+
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.RequireAny, Tools = [DummyTool()] });
322333

323334
Assert.NotNull(request.ToolChoice);
324335
Assert.True(request.ToolChoice.HasMode);
@@ -328,7 +339,7 @@ public void AsCompletionsRequest_RequireAnyToolMode_SetsRequiredToolChoice()
328339
[Fact]
329340
public void AsCompletionsRequest_RequireSpecificToolMode_SetsFunctionNameToolChoice()
330341
{
331-
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.RequireSpecific("get_weather") });
342+
var request = CreateClient().AsCompletionsRequest([], new ChatOptions { ToolMode = ChatToolMode.RequireSpecific("get_weather"), Tools = [DummyTool()] });
332343

333344
Assert.NotNull(request.ToolChoice);
334345
Assert.True(request.ToolChoice.HasFunctionName);

0 commit comments

Comments
 (0)