Skip to content

Commit b257514

Browse files
committed
test: verify MessageId default is lazy and per-instance
Adds MessageId_WhenNotSet_IsLazyAndUniquePerInstance (two separately constructed messages get distinct generated ids, and repeated reads on the same instance return the same cached value) and MessageId_WhenSetFromJson_IsPreservedExactly (an explicit messageId in the payload is not overwritten by the lazy default).
1 parent 5f0df10 commit b257514

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

tests/A2A.V0_3.UnitTests/GitHubIssues/Issue396.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,38 @@ public void Issue_396_Passes()
4343
Assert.Equal(MessageRole.Agent, task.Status.Message.Role);
4444
Assert.Single(task.Status.Message.Parts);
4545
}
46+
47+
[Fact]
48+
public void MessageId_WhenNotSet_IsLazyAndUniquePerInstance()
49+
{
50+
var first = new AgentMessage { Role = MessageRole.Agent };
51+
var second = new AgentMessage { Role = MessageRole.Agent };
52+
53+
// Each unset instance gets its own generated id, not a shared/cached one.
54+
Assert.False(string.IsNullOrEmpty(first.MessageId));
55+
Assert.False(string.IsNullOrEmpty(second.MessageId));
56+
Assert.NotEqual(first.MessageId, second.MessageId);
57+
58+
// Reading it twice on the same instance returns the same cached value.
59+
Assert.Equal(first.MessageId, first.MessageId);
60+
}
61+
62+
[Fact]
63+
public void MessageId_WhenSetFromJson_IsPreservedExactly()
64+
{
65+
const string json = """
66+
{
67+
"kind": "message",
68+
"role": "user",
69+
"messageId": "explicit-id",
70+
"parts": []
71+
}
72+
""";
73+
74+
var message = JsonSerializer.Deserialize<AgentMessage>(json, A2AJsonUtilities.DefaultOptions);
75+
76+
Assert.NotNull(message);
77+
Assert.Equal("explicit-id", message.MessageId);
78+
}
4679
}
4780
}

0 commit comments

Comments
 (0)