public void DefaultConstructor() { var p = new GuildPermissions(); Assert.Equal((ulong)0, p.RawValue); Assert.Equal(GuildPermissions.None.RawValue, p.RawValue); }
public 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.Modify(); // ensure that the raw values match Assert.Equal((ulong)0, copy.RawValue); // test modify with no parameters copy = GuildPermissions.None.Modify(); Assert.Equal(GuildPermissions.None.RawValue, copy.RawValue); // test modify with no parameters on all permissions copy = GuildPermissions.All.Modify(); Assert.Equal(GuildPermissions.All.RawValue, copy.RawValue); // test modify with no parameters on webhook permissions copy = GuildPermissions.Webhook.Modify(); Assert.Equal(GuildPermissions.Webhook.RawValue, copy.RawValue); // Get all distinct values (ReadMessages = ViewChannel) var enumValues = (Enum.GetValues(typeof(GuildPermission)) as GuildPermission[]) .Distinct() .ToArray(); // test GuildPermissions.All ulong sumOfAllGuildPermissions = 0; foreach(var v in enumValues) { 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(enumValues.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); return Task.CompletedTask; }
public void 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.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); }
public void RawValueConstructor() { // returns all of the values that will be tested // a Theory cannot be used here, because these values are not all constants IEnumerable <ulong> GetTestValues() { yield return(0); yield return(GuildPermissions.None.RawValue); yield return(GuildPermissions.All.RawValue); yield return(GuildPermissions.Webhook.RawValue); }; foreach (var rawValue in GetTestValues()) { var p = new GuildPermissions(rawValue); Assert.Equal(rawValue, p.RawValue); } }
public 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // individual permission test perm = perm.Modify(viewChannel: true); Assert.True(perm.ViewChannel); Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewChannel); perm = perm.Modify(viewChannel: false); Assert.False(perm.ViewChannel); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); // 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); Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); return(Task.CompletedTask); }
private void TestHelper(GuildPermissions value, GuildPermission permission, bool expected = false) => TestHelper(value.RawValue, (ulong)permission, expected);
public void Modify() { // asserts that flag values can be checked // and that flag values can be toggled on and off // and that the behavior of ToList works as expected void AssertUtil(GuildPermission permission, Func <GuildPermissions, bool> has, Func <GuildPermissions, bool, GuildPermissions> modify) { var perm = new GuildPermissions(); // ensure permission initially false // use both the function and Has to ensure that the GetPermission // function is working Assert.False(has(perm)); Assert.False(perm.Has(permission)); // enable it, and ensure that it gets set perm = modify(perm, true); Assert.True(has(perm)); Assert.True(perm.Has(permission)); // check ToList behavior var list = perm.ToList(); Assert.Contains(permission, list); Assert.Single(list); // set it false again perm = modify(perm, false); Assert.False(has(perm)); Assert.False(perm.Has(permission)); // ensure that no perms are set now Assert.Equal(GuildPermissions.None.RawValue, perm.RawValue); } AssertUtil(GuildPermission.CreateInstantInvite, x => x.CreateInstantInvite, (p, enable) => p.Modify(createInstantInvite: enable)); AssertUtil(GuildPermission.KickMembers, x => x.KickMembers, (p, enable) => p.Modify(kickMembers: enable)); AssertUtil(GuildPermission.BanMembers, x => x.BanMembers, (p, enable) => p.Modify(banMembers: enable)); AssertUtil(GuildPermission.Administrator, x => x.Administrator, (p, enable) => p.Modify(administrator: enable)); AssertUtil(GuildPermission.ManageChannels, x => x.ManageChannels, (p, enable) => p.Modify(manageChannels: enable)); AssertUtil(GuildPermission.ManageGuild, x => x.ManageGuild, (p, enable) => p.Modify(manageGuild: enable)); AssertUtil(GuildPermission.AddReactions, x => x.AddReactions, (p, enable) => p.Modify(addReactions: enable)); AssertUtil(GuildPermission.ViewAuditLog, x => x.ViewAuditLog, (p, enable) => p.Modify(viewAuditLog: enable)); AssertUtil(GuildPermission.ViewGuildInsights, x => x.ViewGuildInsights, (p, enable) => p.Modify(viewGuildInsights: enable)); AssertUtil(GuildPermission.ViewChannel, x => x.ViewChannel, (p, enable) => p.Modify(viewChannel: enable)); AssertUtil(GuildPermission.SendMessages, x => x.SendMessages, (p, enable) => p.Modify(sendMessages: enable)); AssertUtil(GuildPermission.SendTTSMessages, x => x.SendTTSMessages, (p, enable) => p.Modify(sendTTSMessages: enable)); AssertUtil(GuildPermission.ManageMessages, x => x.ManageMessages, (p, enable) => p.Modify(manageMessages: enable)); AssertUtil(GuildPermission.EmbedLinks, x => x.EmbedLinks, (p, enable) => p.Modify(embedLinks: enable)); AssertUtil(GuildPermission.AttachFiles, x => x.AttachFiles, (p, enable) => p.Modify(attachFiles: enable)); AssertUtil(GuildPermission.ReadMessageHistory, x => x.ReadMessageHistory, (p, enable) => p.Modify(readMessageHistory: enable)); AssertUtil(GuildPermission.MentionEveryone, x => x.MentionEveryone, (p, enable) => p.Modify(mentionEveryone: enable)); AssertUtil(GuildPermission.UseExternalEmojis, x => x.UseExternalEmojis, (p, enable) => p.Modify(useExternalEmojis: enable)); AssertUtil(GuildPermission.Connect, x => x.Connect, (p, enable) => p.Modify(connect: enable)); AssertUtil(GuildPermission.Speak, x => x.Speak, (p, enable) => p.Modify(speak: enable)); AssertUtil(GuildPermission.MuteMembers, x => x.MuteMembers, (p, enable) => p.Modify(muteMembers: enable)); AssertUtil(GuildPermission.MoveMembers, x => x.MoveMembers, (p, enable) => p.Modify(moveMembers: enable)); AssertUtil(GuildPermission.UseVAD, x => x.UseVAD, (p, enable) => p.Modify(useVoiceActivation: enable)); AssertUtil(GuildPermission.ChangeNickname, x => x.ChangeNickname, (p, enable) => p.Modify(changeNickname: enable)); AssertUtil(GuildPermission.ManageNicknames, x => x.ManageNicknames, (p, enable) => p.Modify(manageNicknames: enable)); AssertUtil(GuildPermission.ManageRoles, x => x.ManageRoles, (p, enable) => p.Modify(manageRoles: enable)); AssertUtil(GuildPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable)); AssertUtil(GuildPermission.ManageEmojis, x => x.ManageEmojis, (p, enable) => p.Modify(manageEmojis: enable)); }