using WxAgent.Core; using Xunit; namespace WxAgent.Core.Tests; public sealed class WechatMentionConfirmationTests { [Theory] [InlineData("\uFFFC", true)] [InlineData("\uFFFC\u2005", true)] [InlineData("@Hao 豪", false)] [InlineData("@", false)] [InlineData("\uFFFCunexpected", false)] [InlineData("\uFFFC\uFFFC", false)] public void RequiresExactlyOneStructuredMentionToken(string value, bool expected) => Assert.Equal(expected, WechatSendConfirmation.IsMentionToken(value)); [Theory] [InlineData("@Hao 豪 marker", "Hao 豪", true)] [InlineData("@Hao 豪\u2005marker", "Hao 豪", true)] [InlineData("@所有人 marker", "所有人", true)] [InlineData("@Hao 豪 other", "Hao 豪", false)] [InlineData("@Other marker", "Hao 豪", false)] public void RequiresFreshExactMentionAndBody(string text, string member, bool expected) { var message = new ChatMessageSnapshot(text, "fresh", 0, ChatMessageType.Text); Assert.Equal(expected, WechatSendConfirmation.MatchesMention(message, new HashSet(), member, "marker")); Assert.False(WechatSendConfirmation.MatchesMention(message, new HashSet { "fresh" }, member, "marker")); Assert.False(WechatSendConfirmation.MatchesMention(message with { Type = ChatMessageType.Quote }, new HashSet(), member, "marker")); } }