Files

32 lines
1.4 KiB
C#

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<string>(), member, "marker"));
Assert.False(WechatSendConfirmation.MatchesMention(message, new HashSet<string> { "fresh" }, member, "marker"));
Assert.False(WechatSendConfirmation.MatchesMention(message with { Type = ChatMessageType.Quote }, new HashSet<string>(), member, "marker"));
}
}