using System; using System.Collections.Generic; using System.Text; using Xunit; namespace Discord { public class EmoteTests { [Fact] public void Test_Emote_Parse() { Assert.True(Emote.TryParse("<:typingstatus:394207658351263745>", out Emote emote)); Assert.NotNull(emote); Assert.Equal("typingstatus", emote.Name); Assert.Equal(394207658351263745UL, emote.Id); Assert.False(emote.Animated); Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(1514056829775), emote.CreatedAt); Assert.EndsWith("png", emote.Url); } [Fact] public void Test_Invalid_Emote_Parse() { Assert.False(Emote.TryParse("invalid", out _)); Assert.False(Emote.TryParse("<:typingstatus:not_a_number>", out _)); Assert.Throws(() => Emote.Parse("invalid")); } [Fact] public void Test_Animated_Emote_Parse() { Assert.True(Emote.TryParse("", out Emote emote)); Assert.NotNull(emote); Assert.Equal("typingstatus", emote.Name); Assert.Equal(394207658351263745UL, emote.Id); Assert.True(emote.Animated); Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(1514056829775), emote.CreatedAt); Assert.EndsWith("gif", emote.Url); } [Fact] public void Test_Invalid_Amimated_Emote_Parse() { Assert.False(Emote.TryParse("", out _)); Assert.False(Emote.TryParse("", out _)); Assert.False(Emote.TryParse("", out _)); } } }