Skip to content

Commit a94bbb0

Browse files
committed
test(core): add Msg test
1 parent cd4e0fe commit a94bbb0

1 file changed

Lines changed: 165 additions & 0 deletions

File tree

  • agentscope-core/src/test/java/io/agentscope/core/message

agentscope-core/src/test/java/io/agentscope/core/message/MsgTest.java

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616
package io.agentscope.core.message;
1717

1818
import static org.junit.jupiter.api.Assertions.assertEquals;
19+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
1920
import static org.junit.jupiter.api.Assertions.assertNotNull;
2021
import static org.junit.jupiter.api.Assertions.assertTrue;
2122

23+
import java.util.List;
2224
import java.util.Map;
2325
import org.junit.jupiter.api.Test;
2426

@@ -205,4 +207,167 @@ void testTextContentConvenienceMethod() {
205207
assertTrue(msg.getFirstContentBlock() instanceof TextBlock);
206208
assertEquals("Hello World", ((TextBlock) msg.getFirstContentBlock()).getText());
207209
}
210+
211+
@Test
212+
void testContentBlocksEqualsAndHashCodeUseValues() {
213+
assertValueEquality(
214+
TextBlock.builder().text("hello").build(),
215+
TextBlock.builder().text("hello").build(),
216+
TextBlock.builder().text("different").build());
217+
218+
assertValueEquality(
219+
URLSource.builder().url("https://example.com/image.png").build(),
220+
URLSource.builder().url("https://example.com/image.png").build(),
221+
URLSource.builder().url("https://example.com/other.png").build());
222+
223+
assertValueEquality(
224+
Base64Source.builder().mediaType("image/png").data("abc").build(),
225+
Base64Source.builder().mediaType("image/png").data("abc").build(),
226+
Base64Source.builder().mediaType("image/png").data("def").build());
227+
228+
assertValueEquality(
229+
ImageBlock.builder()
230+
.source(URLSource.builder().url("https://example.com/image.png").build())
231+
.minPixels(128)
232+
.maxPixels(512)
233+
.build(),
234+
ImageBlock.builder()
235+
.source(URLSource.builder().url("https://example.com/image.png").build())
236+
.minPixels(128)
237+
.maxPixels(512)
238+
.build(),
239+
ImageBlock.builder()
240+
.source(URLSource.builder().url("https://example.com/image.png").build())
241+
.minPixels(128)
242+
.maxPixels(1024)
243+
.build());
244+
245+
assertValueEquality(
246+
AudioBlock.builder()
247+
.source(Base64Source.builder().mediaType("audio/mp3").data("abc").build())
248+
.build(),
249+
AudioBlock.builder()
250+
.source(Base64Source.builder().mediaType("audio/mp3").data("abc").build())
251+
.build(),
252+
AudioBlock.builder()
253+
.source(Base64Source.builder().mediaType("audio/mp3").data("def").build())
254+
.build());
255+
256+
assertValueEquality(
257+
VideoBlock.builder()
258+
.source(URLSource.builder().url("https://example.com/video.mp4").build())
259+
.fps(2.0f)
260+
.maxFrames(12)
261+
.minPixels(128)
262+
.maxPixels(512)
263+
.totalPixels(2048)
264+
.build(),
265+
VideoBlock.builder()
266+
.source(URLSource.builder().url("https://example.com/video.mp4").build())
267+
.fps(2.0f)
268+
.maxFrames(12)
269+
.minPixels(128)
270+
.maxPixels(512)
271+
.totalPixels(2048)
272+
.build(),
273+
VideoBlock.builder()
274+
.source(URLSource.builder().url("https://example.com/video.mp4").build())
275+
.fps(2.0f)
276+
.maxFrames(12)
277+
.minPixels(128)
278+
.maxPixels(512)
279+
.totalPixels(4096)
280+
.build());
281+
282+
assertValueEquality(
283+
ThinkingBlock.builder().thinking("thinking").metadata(Map.of("k", "v")).build(),
284+
ThinkingBlock.builder().thinking("thinking").metadata(Map.of("k", "v")).build(),
285+
ThinkingBlock.builder()
286+
.thinking("thinking")
287+
.metadata(Map.of("k", "different"))
288+
.build());
289+
290+
assertValueEquality(
291+
ToolUseBlock.builder()
292+
.id("call-1")
293+
.name("search")
294+
.input(Map.of("query", "agent"))
295+
.content("{\"query\":\"agent\"}")
296+
.metadata(Map.of("signature", "sig-1"))
297+
.build(),
298+
ToolUseBlock.builder()
299+
.id("call-1")
300+
.name("search")
301+
.input(Map.of("query", "agent"))
302+
.content("{\"query\":\"agent\"}")
303+
.metadata(Map.of("signature", "sig-1"))
304+
.build(),
305+
ToolUseBlock.builder()
306+
.id("call-1")
307+
.name("search")
308+
.input(Map.of("query", "agent"))
309+
.content("{\"query\":\"agent\"}")
310+
.metadata(Map.of("signature", "sig-2"))
311+
.build());
312+
313+
assertValueEquality(
314+
ToolResultBlock.of(
315+
"call-1",
316+
"search",
317+
List.of(TextBlock.builder().text("result").build()),
318+
Map.of("status", "ok")),
319+
ToolResultBlock.of(
320+
"call-1",
321+
"search",
322+
List.of(TextBlock.builder().text("result").build()),
323+
Map.of("status", "ok")),
324+
ToolResultBlock.of(
325+
"call-1",
326+
"search",
327+
List.of(TextBlock.builder().text("result").build()),
328+
Map.of("status", "different")));
329+
}
330+
331+
@Test
332+
void testMsgEqualsAndHashCodeUseValues() {
333+
Msg first =
334+
Msg.builder()
335+
.id("msg-1")
336+
.name("assistant")
337+
.role(MsgRole.ASSISTANT)
338+
.content(TextBlock.builder().text("hello").build())
339+
.metadata(Map.of("k", "v"))
340+
.timestamp("2026-05-13 11:00:00.000")
341+
.build();
342+
Msg second =
343+
Msg.builder()
344+
.id("msg-1")
345+
.name("assistant")
346+
.role(MsgRole.ASSISTANT)
347+
.content(TextBlock.builder().text("hello").build())
348+
.metadata(Map.of("k", "v"))
349+
.timestamp("2026-05-13 11:00:00.000")
350+
.build();
351+
Msg different =
352+
Msg.builder()
353+
.id("msg-1")
354+
.name("assistant")
355+
.role(MsgRole.ASSISTANT)
356+
.content(TextBlock.builder().text("hello").build())
357+
.metadata(Map.of("k", "v"))
358+
.timestamp("2026-05-13 11:00:01.000")
359+
.build();
360+
361+
assertValueEquality(first, second, different);
362+
}
363+
364+
private void assertValueEquality(Object first, Object second, Object different) {
365+
assertEquals(first, first);
366+
assertNotEquals(first, null);
367+
assertNotEquals(first, "other");
368+
assertEquals(first, second);
369+
assertEquals(second, first);
370+
assertEquals(first.hashCode(), second.hashCode());
371+
assertNotEquals(first, different);
372+
}
208373
}

0 commit comments

Comments
 (0)