| @@ -1,10 +1,284 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Text; | |||
| using System.Threading.Tasks; | |||
| using Xunit; | |||
| namespace Discord | |||
| { | |||
| public partial class Tests | |||
| { | |||
| [Fact] | |||
| public async Task TestGuildPermission() | |||
| { | |||
| // Test Guild Permission Constructors | |||
| var perm = new GuildPermissions(); | |||
| // the default raw value is 0 | |||
| Assert.Equal((ulong)0, perm.RawValue); | |||
| // also check that it is the same as none | |||
| Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); | |||
| // permissions list is empty by default | |||
| Assert.Empty(perm.ToList()); | |||
| Assert.NotNull(perm.ToList()); | |||
| // Test modify with no parameters | |||
| var copy = perm = perm.Modify(); | |||
| // ensure that the raw values match | |||
| Assert.Equal((ulong)0, copy.RawValue); | |||
| // test GuildPermissions.All | |||
| ulong sumOfAllGuildPermissions = 0; | |||
| foreach(var v in Enum.GetValues(typeof(GuildPermission))) | |||
| { | |||
| sumOfAllGuildPermissions |= (ulong)v; | |||
| } | |||
| // assert that the raw values match | |||
| Assert.Equal(sumOfAllGuildPermissions, GuildPermissions.All.RawValue); | |||
| Assert.Equal((ulong)0, GuildPermissions.None.RawValue); | |||
| // assert that GuildPermissions.All contains the same number of permissions as the | |||
| // GuildPermissions enum | |||
| Assert.Equal(Enum.GetValues(typeof(GuildPermission)).Length, GuildPermissions.All.ToList().Count); | |||
| // assert that webhook has the same raw value | |||
| ulong webHookPermissions = (ulong)( | |||
| GuildPermission.SendMessages | GuildPermission.SendTTSMessages | GuildPermission.EmbedLinks | | |||
| GuildPermission.AttachFiles); | |||
| Assert.Equal(webHookPermissions, GuildPermissions.Webhook.RawValue); | |||
| } | |||
| [Fact] | |||
| public async Task TestGuildPermissionModify() | |||
| { | |||
| var perm = new GuildPermissions(); | |||
| // tests each of the parameters of Modify one by one | |||
| // test modify with each of the parameters | |||
| // test initially false state | |||
| Assert.False(perm.CreateInstantInvite); | |||
| // ensure that when we modify it the parameter works | |||
| perm = perm.Modify(createInstantInvite: true); | |||
| Assert.True(perm.CreateInstantInvite); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite); | |||
| // set it false again, then move on to the next permission | |||
| perm = perm.Modify(createInstantInvite: false); | |||
| Assert.False(perm.CreateInstantInvite); | |||
| // individual permission test | |||
| perm = perm.Modify(kickMembers: true); | |||
| Assert.True(perm.KickMembers); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.KickMembers); | |||
| perm = perm.Modify(kickMembers: false); | |||
| Assert.False(perm.KickMembers); | |||
| // individual permission test | |||
| perm = perm.Modify(banMembers: true); | |||
| Assert.True(perm.BanMembers); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.BanMembers); | |||
| perm = perm.Modify(banMembers: false); | |||
| Assert.False(perm.BanMembers); | |||
| // individual permission test | |||
| perm = perm.Modify(administrator: true); | |||
| Assert.True(perm.Administrator); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.Administrator); | |||
| perm = perm.Modify(administrator: false); | |||
| Assert.False(perm.Administrator); | |||
| // individual permission test | |||
| perm = perm.Modify(manageChannels: true); | |||
| Assert.True(perm.ManageChannels); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels); | |||
| perm = perm.Modify(manageChannels: false); | |||
| Assert.False(perm.ManageChannels); | |||
| // individual permission test | |||
| perm = perm.Modify(manageGuild: true); | |||
| Assert.True(perm.ManageGuild); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageGuild); | |||
| perm = perm.Modify(manageGuild: false); | |||
| Assert.False(perm.ManageGuild); | |||
| // individual permission test | |||
| perm = perm.Modify(addReactions: true); | |||
| Assert.True(perm.AddReactions); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions); | |||
| perm = perm.Modify(addReactions: false); | |||
| Assert.False(perm.AddReactions); | |||
| // individual permission test | |||
| perm = perm.Modify(viewAuditLog: true); | |||
| Assert.True(perm.ViewAuditLog); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewAuditLog); | |||
| perm = perm.Modify(viewAuditLog: false); | |||
| Assert.False(perm.ViewAuditLog); | |||
| // individual permission test | |||
| perm = perm.Modify(readMessages: true); | |||
| Assert.True(perm.ReadMessages); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessages); | |||
| perm = perm.Modify(readMessages: false); | |||
| Assert.False(perm.ReadMessages); | |||
| // individual permission test | |||
| perm = perm.Modify(sendMessages: true); | |||
| Assert.True(perm.SendMessages); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages); | |||
| perm = perm.Modify(sendMessages: false); | |||
| Assert.False(perm.SendMessages); | |||
| // individual permission test | |||
| perm = perm.Modify(embedLinks: true); | |||
| Assert.True(perm.EmbedLinks); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks); | |||
| perm = perm.Modify(embedLinks: false); | |||
| Assert.False(perm.EmbedLinks); | |||
| // individual permission test | |||
| perm = perm.Modify(attachFiles: true); | |||
| Assert.True(perm.AttachFiles); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles); | |||
| perm = perm.Modify(attachFiles: false); | |||
| Assert.False(perm.AttachFiles); | |||
| // individual permission test | |||
| perm = perm.Modify(readMessageHistory: true); | |||
| Assert.True(perm.ReadMessageHistory); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory); | |||
| perm = perm.Modify(readMessageHistory: false); | |||
| Assert.False(perm.ReadMessageHistory); | |||
| // individual permission test | |||
| perm = perm.Modify(mentionEveryone: true); | |||
| Assert.True(perm.MentionEveryone); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone); | |||
| perm = perm.Modify(mentionEveryone: false); | |||
| Assert.False(perm.MentionEveryone); | |||
| // individual permission test | |||
| perm = perm.Modify(useExternalEmojis: true); | |||
| Assert.True(perm.UseExternalEmojis); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis); | |||
| perm = perm.Modify(useExternalEmojis: false); | |||
| Assert.False(perm.UseExternalEmojis); | |||
| // individual permission test | |||
| perm = perm.Modify(connect: true); | |||
| Assert.True(perm.Connect); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect); | |||
| perm = perm.Modify(connect: false); | |||
| Assert.False(perm.Connect); | |||
| // individual permission test | |||
| perm = perm.Modify(speak: true); | |||
| Assert.True(perm.Speak); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak); | |||
| perm = perm.Modify(speak: false); | |||
| Assert.False(perm.Speak); | |||
| // individual permission test | |||
| perm = perm.Modify(muteMembers: true); | |||
| Assert.True(perm.MuteMembers); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers); | |||
| perm = perm.Modify(muteMembers: false); | |||
| Assert.False(perm.MuteMembers); | |||
| // individual permission test | |||
| perm = perm.Modify(deafenMembers: true); | |||
| Assert.True(perm.DeafenMembers); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers); | |||
| perm = perm.Modify(deafenMembers: false); | |||
| Assert.False(perm.DeafenMembers); | |||
| // individual permission test | |||
| perm = perm.Modify(moveMembers: true); | |||
| Assert.True(perm.MoveMembers); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers); | |||
| perm = perm.Modify(moveMembers: false); | |||
| Assert.False(perm.MoveMembers); | |||
| // individual permission test | |||
| perm = perm.Modify(useVoiceActivation: true); | |||
| Assert.True(perm.UseVAD); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD); | |||
| perm = perm.Modify(useVoiceActivation: false); | |||
| Assert.False(perm.UseVAD); | |||
| // individual permission test | |||
| perm = perm.Modify(changeNickname: true); | |||
| Assert.True(perm.ChangeNickname); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ChangeNickname); | |||
| perm = perm.Modify(changeNickname: false); | |||
| Assert.False(perm.ChangeNickname); | |||
| // individual permission test | |||
| perm = perm.Modify(manageNicknames: true); | |||
| Assert.True(perm.ManageNicknames); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageNicknames); | |||
| perm = perm.Modify(manageNicknames: false); | |||
| Assert.False(perm.ManageNicknames); | |||
| // individual permission test | |||
| perm = perm.Modify(manageRoles: true); | |||
| Assert.True(perm.ManageRoles); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles); | |||
| perm = perm.Modify(manageRoles: false); | |||
| Assert.False(perm.ManageRoles); | |||
| // individual permission test | |||
| perm = perm.Modify(manageWebhooks: true); | |||
| Assert.True(perm.ManageWebhooks); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks); | |||
| perm = perm.Modify(manageWebhooks: false); | |||
| Assert.False(perm.ManageWebhooks); | |||
| // individual permission test | |||
| perm = perm.Modify(manageEmojis: true); | |||
| Assert.True(perm.ManageEmojis); | |||
| Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageEmojis); | |||
| perm = perm.Modify(manageEmojis: false); | |||
| Assert.False(perm.ManageEmojis); | |||
| } | |||
| } | |||
| } | |||