Skip to content

Commit 091275f

Browse files
google-genai-botcopybara-github
authored andcommitted
refactor: Simplifying TestUtils
Basically, the single Event case and multi-Event case had duplicate code. I consolidated the implementation, and broke down different parts of the process into helper methods. PiperOrigin-RevId: 823580027
1 parent 87dec37 commit 091275f

File tree

1 file changed

+34
-55
lines changed

1 file changed

+34
-55
lines changed

core/src/test/java/com/google/adk/testing/TestUtils.java

Lines changed: 34 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -88,64 +88,43 @@ public static Event createEscalateEvent(String id) {
8888

8989
public static ImmutableList<Object> simplifyEvents(List<Event> events) {
9090
return events.stream()
91+
.map(event -> event.author() + ": " + formatEventContent(event))
92+
.collect(toImmutableList());
93+
}
94+
95+
private static String formatEventContent(Event event) {
96+
return event
97+
.content()
98+
.flatMap(content -> content.parts())
9199
.map(
92-
event -> {
93-
if (event.content().isPresent() && event.content().get().parts().isPresent()) {
94-
List<Part> parts = event.content().get().parts().get();
95-
if (parts.size() == 1) {
96-
Part part = parts.get(0);
97-
if (part.text().isPresent()) {
98-
return event.author() + ": " + part.text().get();
99-
} else if (part.functionCall().isPresent()) {
100-
// Custom formatting for FunctionCall
101-
FunctionCall fc = part.functionCall().get();
102-
String argsString =
103-
fc.args().map(Object::toString).orElse("{}"); // Handle optional args
104-
return String.format(
105-
"%s: FunctionCall(name=%s, args=%s)",
106-
event.author(), fc.name().orElse(""), argsString);
107-
} else if (part.functionResponse().isPresent()) {
108-
// Custom formatting for FunctionResponse
109-
FunctionResponse fr = part.functionResponse().get();
110-
String responseString =
111-
fr.response()
112-
.map(Object::toString)
113-
.orElse("{}"); // Handle optional response
114-
return String.format(
115-
"%s: FunctionResponse(name=%s, response=%s)",
116-
event.author(), fr.name().orElse(""), responseString);
117-
}
118-
} else { // Multiple parts, return the list of parts for simplicity
119-
// Apply custom formatting to parts within the list if needed
120-
String partsString =
121-
parts.stream()
122-
.map(
123-
part -> {
124-
if (part.text().isPresent()) {
125-
return part.text().get();
126-
} else if (part.functionCall().isPresent()) {
127-
FunctionCall fc = part.functionCall().get();
128-
String argsString = fc.args().map(Object::toString).orElse("{}");
129-
return String.format(
130-
"FunctionCall(name=%s, args=%s)",
131-
fc.name().orElse(""), argsString);
132-
} else if (part.functionResponse().isPresent()) {
133-
FunctionResponse fr = part.functionResponse().get();
134-
String responseString =
135-
fr.response().map(Object::toString).orElse("{}");
136-
return String.format(
137-
"FunctionResponse(name=%s, response=%s)",
138-
fr.name().orElse(""), responseString);
139-
}
140-
return part.toString(); // Fallback
141-
})
142-
.collect(joining(", "));
143-
return event.author() + ": [" + partsString + "]";
144-
}
100+
parts -> {
101+
if (parts.size() == 1) {
102+
return formatPart(parts.get(0));
103+
} else {
104+
String contentString =
105+
parts.stream().map(TestUtils::formatPart).collect(joining(", "));
106+
return "[" + contentString + "]";
145107
}
146-
return event.author() + ": [NO_CONTENT]"; // Fallback if no content/parts
147108
})
148-
.collect(toImmutableList());
109+
.orElse("[NO_CONTENT]");
110+
}
111+
112+
private static String formatPart(Part part) {
113+
if (part.text().isPresent()) {
114+
return part.text().get();
115+
}
116+
if (part.functionCall().isPresent()) {
117+
FunctionCall fc = part.functionCall().get();
118+
String argsString = fc.args().map(Object::toString).orElse("{}");
119+
return String.format("FunctionCall(name=%s, args=%s)", fc.name().orElse(""), argsString);
120+
}
121+
if (part.functionResponse().isPresent()) {
122+
FunctionResponse fr = part.functionResponse().get();
123+
String responseString = fr.response().map(Object::toString).orElse("{}");
124+
return String.format(
125+
"FunctionResponse(name=%s, response=%s)", fr.name().orElse(""), responseString);
126+
}
127+
return part.toString(); // Fallback
149128
}
150129

151130
public static void assertEqualIgnoringFunctionIds(

0 commit comments

Comments
 (0)