|
|
@@ -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); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |