using System; using System.Collections.Generic; using System.Text; using Xunit; namespace Discord { /// /// Tests the methods provided in . /// public class MentionUtilsTests { /// /// Tests /// [Fact] public void MentionUser() { Assert.Equal("<@123>", MentionUtils.MentionUser(123u)); Assert.Equal("<@123>", MentionUtils.MentionUser("123")); } /// /// Tests /// [Fact] public void MentionChannel() { Assert.Equal("<#123>", MentionUtils.MentionChannel(123u)); Assert.Equal("<#123>", MentionUtils.MentionChannel("123")); } /// /// Tests /// [Fact] public void MentionRole() { Assert.Equal("<@&123>", MentionUtils.MentionRole(123u)); Assert.Equal("<@&123>", MentionUtils.MentionRole("123")); } [Theory] [InlineData("<@!123>", 123)] [InlineData("<@123>", 123)] public void ParseUser_Pass(string user, ulong id) { var parsed = MentionUtils.ParseUser(user); Assert.Equal(id, parsed); Assert.True(MentionUtils.TryParseUser(user, out ulong result)); Assert.Equal(id, result); } [Theory] [InlineData(" ")] [InlineData("invalid")] [InlineData("<12!3@>")] [InlineData("<123>")] public void ParseUser_Fail(string user) { Assert.Throws(() => MentionUtils.ParseUser(user)); Assert.False(MentionUtils.TryParseUser(user, out _)); } [Fact] public void ParseUser_Null() { Assert.Throws(() => MentionUtils.ParseUser(null)); Assert.Throws(() => MentionUtils.TryParseUser(null, out _)); } [Theory] [InlineData("<#123>", 123)] public void ParseChannel_Pass(string channel, ulong id) { var parsed = MentionUtils.ParseChannel(channel); Assert.Equal(id, parsed); Assert.True(MentionUtils.TryParseChannel(channel, out ulong result)); Assert.Equal(id, result); } [Theory] [InlineData(" ")] [InlineData("invalid")] [InlineData("<12#3>")] [InlineData("<123>")] public void ParseChannel_Fail(string channel) { Assert.Throws(() => MentionUtils.ParseChannel(channel)); Assert.False(MentionUtils.TryParseChannel(channel, out _)); } [Fact] public void ParseChannel_Null() { Assert.Throws(() => MentionUtils.ParseChannel(null)); Assert.Throws(() => MentionUtils.TryParseChannel(null, out _)); } [Theory] [InlineData("<@&123>", 123)] public void ParseRole_Pass(string role, ulong id) { var parsed = MentionUtils.ParseRole(role); Assert.Equal(id, parsed); Assert.True(MentionUtils.TryParseRole(role, out ulong result)); Assert.Equal(id, result); } [Theory] [InlineData(" ")] [InlineData("invalid")] [InlineData("<12@&3>")] [InlineData("<123>")] public void ParseRole_Fail(string role) { Assert.Throws(() => MentionUtils.ParseRole(role)); Assert.False(MentionUtils.TryParseRole(role, out _)); } [Fact] public void ParseRole_Null() { Assert.Throws(() => MentionUtils.ParseRole(null)); Assert.Throws(() => MentionUtils.TryParseRole(null, out _)); } } }