Skip to content

Commit 179efbe

Browse files
google-genai-botcopybara-github
authored andcommitted
test: Adding tests for GeminiLlmConnection
PiperOrigin-RevId: 825471417
1 parent 635a6fa commit 179efbe

File tree

1 file changed

+96
-8
lines changed

1 file changed

+96
-8
lines changed

core/src/test/java/com/google/adk/models/GeminiLlmConnectionTest.java

Lines changed: 96 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,14 @@
2020

2121
import com.google.common.collect.ImmutableList;
2222
import com.google.genai.types.Content;
23+
import com.google.genai.types.FunctionCall;
2324
import com.google.genai.types.LiveServerContent;
2425
import com.google.genai.types.LiveServerMessage;
26+
import com.google.genai.types.LiveServerSetupComplete;
27+
import com.google.genai.types.LiveServerToolCall;
28+
import com.google.genai.types.LiveServerToolCallCancellation;
2529
import com.google.genai.types.Part;
30+
import com.google.genai.types.UsageMetadata;
2631
import org.junit.Test;
2732
import org.junit.runner.RunWith;
2833
import org.junit.runners.JUnit4;
@@ -34,8 +39,7 @@ public final class GeminiLlmConnectionTest {
3439
public void convertToServerResponse_withInterruptedTrue_mapsInterruptedField() {
3540
LiveServerContent serverContent =
3641
LiveServerContent.builder()
37-
.modelTurn(
38-
Content.builder().parts(ImmutableList.of(Part.fromText("Model response"))).build())
42+
.modelTurn(Content.fromParts(Part.fromText("Model response")))
3943
.turnComplete(false)
4044
.interrupted(true)
4145
.build();
@@ -55,10 +59,7 @@ public void convertToServerResponse_withInterruptedTrue_mapsInterruptedField() {
5559
public void convertToServerResponse_withInterruptedFalse_mapsInterruptedField() {
5660
LiveServerContent serverContent =
5761
LiveServerContent.builder()
58-
.modelTurn(
59-
Content.builder()
60-
.parts(ImmutableList.of(Part.fromText("Continuing response")))
61-
.build())
62+
.modelTurn(Content.fromParts(Part.fromText("Continuing response")))
6263
.turnComplete(false)
6364
.interrupted(false)
6465
.build();
@@ -75,8 +76,7 @@ public void convertToServerResponse_withInterruptedFalse_mapsInterruptedField()
7576
public void convertToServerResponse_withoutInterruptedField_mapsEmptyOptional() {
7677
LiveServerContent serverContent =
7778
LiveServerContent.builder()
78-
.modelTurn(
79-
Content.builder().parts(ImmutableList.of(Part.fromText("Normal response"))).build())
79+
.modelTurn(Content.fromParts(Part.fromText("Normal response")))
8080
.turnComplete(true)
8181
.build();
8282

@@ -87,4 +87,92 @@ public void convertToServerResponse_withoutInterruptedField_mapsEmptyOptional()
8787
assertThat(response.interrupted()).isEmpty();
8888
assertThat(response.turnComplete()).hasValue(true);
8989
}
90+
91+
@Test
92+
public void convertToServerResponse_withTurnCompleteTrue_mapsPartialFalse() {
93+
LiveServerContent serverContent =
94+
LiveServerContent.builder()
95+
.modelTurn(Content.fromParts(Part.fromText("Final response")))
96+
.turnComplete(true)
97+
.build();
98+
99+
LiveServerMessage message = LiveServerMessage.builder().serverContent(serverContent).build();
100+
101+
LlmResponse response = GeminiLlmConnection.convertToServerResponse(message).get();
102+
103+
assertThat(response.partial()).hasValue(false);
104+
assertThat(response.turnComplete()).hasValue(true);
105+
}
106+
107+
@Test
108+
public void convertToServerResponse_withTurnCompleteFalse_mapsPartialTrue() {
109+
LiveServerContent serverContent =
110+
LiveServerContent.builder()
111+
.modelTurn(Content.fromParts(Part.fromText("Partial response")))
112+
.turnComplete(false)
113+
.build();
114+
115+
LiveServerMessage message = LiveServerMessage.builder().serverContent(serverContent).build();
116+
117+
LlmResponse response = GeminiLlmConnection.convertToServerResponse(message).get();
118+
119+
assertThat(response.partial()).hasValue(true);
120+
assertThat(response.turnComplete()).hasValue(false);
121+
}
122+
123+
@Test
124+
public void convertToServerResponse_withToolCall_mapsContentWithFunctionCall() {
125+
FunctionCall functionCall = FunctionCall.builder().name("tool").build();
126+
LiveServerToolCall toolCall =
127+
LiveServerToolCall.builder().functionCalls(ImmutableList.of(functionCall)).build();
128+
129+
LiveServerMessage message = LiveServerMessage.builder().toolCall(toolCall).build();
130+
131+
LlmResponse response = GeminiLlmConnection.convertToServerResponse(message).get();
132+
133+
assertThat(response.content()).isPresent();
134+
assertThat(response.content().get().parts()).isPresent();
135+
assertThat(response.content().get().parts().get()).hasSize(1);
136+
assertThat(response.content().get().parts().get().get(0).functionCall()).hasValue(functionCall);
137+
assertThat(response.partial()).hasValue(false);
138+
assertThat(response.turnComplete()).hasValue(false);
139+
}
140+
141+
@Test
142+
public void convertToServerResponse_withUsageMetadata_returnsEmptyOptional() {
143+
LiveServerMessage message =
144+
LiveServerMessage.builder().usageMetadata(UsageMetadata.builder().build()).build();
145+
146+
assertThat(GeminiLlmConnection.convertToServerResponse(message)).isEmpty();
147+
}
148+
149+
@Test
150+
public void convertToServerResponse_withToolCallCancellation_returnsEmptyOptional() {
151+
LiveServerMessage message =
152+
LiveServerMessage.builder()
153+
.toolCallCancellation(LiveServerToolCallCancellation.builder().build())
154+
.build();
155+
156+
assertThat(GeminiLlmConnection.convertToServerResponse(message)).isEmpty();
157+
}
158+
159+
@Test
160+
public void convertToServerResponse_withSetupComplete_returnsEmptyOptional() {
161+
LiveServerMessage message =
162+
LiveServerMessage.builder()
163+
.setupComplete(LiveServerSetupComplete.builder().build())
164+
.build();
165+
166+
assertThat(GeminiLlmConnection.convertToServerResponse(message)).isEmpty();
167+
}
168+
169+
@Test
170+
public void convertToServerResponse_withUnknownMessage_returnsErrorResponse() {
171+
LiveServerMessage message = LiveServerMessage.builder().build();
172+
173+
LlmResponse response = GeminiLlmConnection.convertToServerResponse(message).get();
174+
175+
assertThat(response.errorCode()).isPresent();
176+
assertThat(response.errorMessage()).hasValue("Received unknown server message.");
177+
}
90178
}

0 commit comments

Comments
 (0)