| @@ -110,231 +110,55 @@ namespace Discord | |||
| [Fact] | |||
| public Task TestChannelPermissionModify() | |||
| { | |||
| // test channel permission modify | |||
| // test that channel permissions could be modified correctly | |||
| var perm = new ChannelPermissions(); | |||
| // ensure that the permission is initially false | |||
| Assert.False(perm.CreateInstantInvite); | |||
| // ensure that when modified it works | |||
| perm = perm.Modify(createInstantInvite: true); | |||
| Assert.True(perm.CreateInstantInvite); | |||
| Assert.Equal((ulong)ChannelPermission.CreateInstantInvite, perm.RawValue); | |||
| // set false again, move on to next permission | |||
| perm = perm.Modify(createInstantInvite: false); | |||
| Assert.False(perm.CreateInstantInvite); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ManageChannel); | |||
| perm = perm.Modify(manageChannel: true); | |||
| Assert.True(perm.ManageChannel); | |||
| Assert.Equal((ulong)ChannelPermission.ManageChannels, perm.RawValue); | |||
| perm = perm.Modify(manageChannel: false); | |||
| Assert.False(perm.ManageChannel); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.AddReactions); | |||
| perm = perm.Modify(addReactions: true); | |||
| Assert.True(perm.AddReactions); | |||
| Assert.Equal((ulong)ChannelPermission.AddReactions, perm.RawValue); | |||
| perm = perm.Modify(addReactions: false); | |||
| Assert.False(perm.AddReactions); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ViewChannel); | |||
| perm = perm.Modify(viewChannel: true); | |||
| Assert.True(perm.ViewChannel); | |||
| Assert.Equal((ulong)ChannelPermission.ViewChannel, perm.RawValue); | |||
| perm = perm.Modify(viewChannel: false); | |||
| Assert.False(perm.ViewChannel); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.SendMessages); | |||
| perm = perm.Modify(sendMessages: true); | |||
| Assert.True(perm.SendMessages); | |||
| Assert.Equal((ulong)ChannelPermission.SendMessages, perm.RawValue); | |||
| perm = perm.Modify(sendMessages: false); | |||
| Assert.False(perm.SendMessages); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.SendTTSMessages); | |||
| perm = perm.Modify(sendTTSMessages: true); | |||
| Assert.True(perm.SendTTSMessages); | |||
| Assert.Equal((ulong)ChannelPermission.SendTTSMessages, perm.RawValue); | |||
| perm = perm.Modify(sendTTSMessages: false); | |||
| Assert.False(perm.SendTTSMessages); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ManageMessages); | |||
| perm = perm.Modify(manageMessages: true); | |||
| Assert.True(perm.ManageMessages); | |||
| Assert.Equal((ulong)ChannelPermission.ManageMessages, perm.RawValue); | |||
| perm = perm.Modify(manageMessages: false); | |||
| Assert.False(perm.ManageMessages); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.EmbedLinks); | |||
| perm = perm.Modify(embedLinks: true); | |||
| Assert.True(perm.EmbedLinks); | |||
| Assert.Equal((ulong)ChannelPermission.EmbedLinks, perm.RawValue); | |||
| perm = perm.Modify(embedLinks: false); | |||
| Assert.False(perm.EmbedLinks); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.AttachFiles); | |||
| perm = perm.Modify(attachFiles: true); | |||
| Assert.True(perm.AttachFiles); | |||
| Assert.Equal((ulong)ChannelPermission.AttachFiles, perm.RawValue); | |||
| perm = perm.Modify(attachFiles: false); | |||
| Assert.False(perm.AttachFiles); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ReadMessageHistory); | |||
| perm = perm.Modify(readMessageHistory: true); | |||
| Assert.True(perm.ReadMessageHistory); | |||
| Assert.Equal((ulong)ChannelPermission.ReadMessageHistory, perm.RawValue); | |||
| perm = perm.Modify(readMessageHistory: false); | |||
| Assert.False(perm.ReadMessageHistory); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| void Check(ChannelPermission permission, | |||
| Func<ChannelPermissions, bool> has, | |||
| Func<ChannelPermissions, bool, ChannelPermissions> modify) | |||
| { | |||
| // 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)); | |||
| // 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(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| } | |||
| Check(ChannelPermission.CreateInstantInvite, x => x.CreateInstantInvite, (p, enable) => p.Modify(createInstantInvite: enable)); | |||
| Check(ChannelPermission.ManageChannels, x => x.ManageChannel, (p, enable) => p.Modify(manageChannel: enable)); | |||
| Check(ChannelPermission.AddReactions, x => x.AddReactions, (p, enable) => p.Modify(addReactions: enable)); | |||
| Check(ChannelPermission.ViewChannel, x => x.ViewChannel, (p, enable) => p.Modify(viewChannel: enable)); | |||
| Check(ChannelPermission.SendMessages, x => x.SendMessages, (p, enable) => p.Modify(sendMessages: enable)); | |||
| Check(ChannelPermission.SendTTSMessages, x => x.SendTTSMessages, (p, enable) => p.Modify(sendTTSMessages: enable)); | |||
| Check(ChannelPermission.ManageMessages, x => x.ManageMessages, (p, enable) => p.Modify(manageMessages: enable)); | |||
| Check(ChannelPermission.EmbedLinks, x => x.EmbedLinks, (p, enable) => p.Modify(embedLinks: enable)); | |||
| Check(ChannelPermission.AttachFiles, x => x.AttachFiles, (p, enable) => p.Modify(attachFiles: enable)); | |||
| Check(ChannelPermission.ReadMessageHistory, x => x.ReadMessageHistory, (p, enable) => p.Modify(readMessageHistory: enable)); | |||
| Check(ChannelPermission.MentionEveryone, x => x.MentionEveryone, (p, enable) => p.Modify(mentionEveryone: enable)); | |||
| Check(ChannelPermission.UseExternalEmojis, x => x.UseExternalEmojis, (p, enable) => p.Modify(useExternalEmojis: enable)); | |||
| Check(ChannelPermission.Connect, x => x.Connect, (p, enable) => p.Modify(connect: enable)); | |||
| Check(ChannelPermission.Speak, x => x.Speak, (p, enable) => p.Modify(speak: enable)); | |||
| Check(ChannelPermission.MuteMembers, x => x.MuteMembers, (p, enable) => p.Modify(muteMembers: enable)); | |||
| Check(ChannelPermission.DeafenMembers, x => x.DeafenMembers, (p, enable) => p.Modify(deafenMembers: enable)); | |||
| Check(ChannelPermission.MoveMembers, x => x.MoveMembers, (p, enable) => p.Modify(moveMembers: enable)); | |||
| Check(ChannelPermission.UseVAD, x => x.UseVAD, (p, enable) => p.Modify(useVoiceActivation: enable)); | |||
| Check(ChannelPermission.ManageRoles, x => x.ManageRoles, (p, enable) => p.Modify(manageRoles: enable)); | |||
| Check(ChannelPermission.ManageWebhooks, x => x.ManageWebhooks, (p, enable) => p.Modify(manageWebhooks: enable)); | |||
| Check(ChannelPermission.PrioritySpeaker, x => x.PrioritySpeaker, (p, enable) => p.Modify(prioritySpeaker: enable)); | |||
| // individual permission test | |||
| Assert.False(perm.MentionEveryone); | |||
| perm = perm.Modify(mentionEveryone: true); | |||
| Assert.True(perm.MentionEveryone); | |||
| Assert.Equal((ulong)ChannelPermission.MentionEveryone, perm.RawValue); | |||
| perm = perm.Modify(mentionEveryone: false); | |||
| Assert.False(perm.MentionEveryone); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.UseExternalEmojis); | |||
| perm = perm.Modify(useExternalEmojis: true); | |||
| Assert.True(perm.UseExternalEmojis); | |||
| Assert.Equal((ulong)ChannelPermission.UseExternalEmojis, perm.RawValue); | |||
| perm = perm.Modify(useExternalEmojis: false); | |||
| Assert.False(perm.UseExternalEmojis); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.Connect); | |||
| perm = perm.Modify(connect: true); | |||
| Assert.True(perm.Connect); | |||
| Assert.Equal((ulong)ChannelPermission.Connect, perm.RawValue); | |||
| perm = perm.Modify(connect: false); | |||
| Assert.False(perm.Connect); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.Speak); | |||
| perm = perm.Modify(speak: true); | |||
| Assert.True(perm.Speak); | |||
| Assert.Equal((ulong)ChannelPermission.Speak, perm.RawValue); | |||
| perm = perm.Modify(speak: false); | |||
| Assert.False(perm.Speak); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.MuteMembers); | |||
| perm = perm.Modify(muteMembers: true); | |||
| Assert.True(perm.MuteMembers); | |||
| Assert.Equal((ulong)ChannelPermission.MuteMembers, perm.RawValue); | |||
| perm = perm.Modify(muteMembers: false); | |||
| Assert.False(perm.MuteMembers); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.DeafenMembers); | |||
| perm = perm.Modify(deafenMembers: true); | |||
| Assert.True(perm.DeafenMembers); | |||
| Assert.Equal((ulong)ChannelPermission.DeafenMembers, perm.RawValue); | |||
| perm = perm.Modify(deafenMembers: false); | |||
| Assert.False(perm.DeafenMembers); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.MoveMembers); | |||
| perm = perm.Modify(moveMembers: true); | |||
| Assert.True(perm.MoveMembers); | |||
| Assert.Equal((ulong)ChannelPermission.MoveMembers, perm.RawValue); | |||
| perm = perm.Modify(moveMembers: false); | |||
| Assert.False(perm.MoveMembers); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.UseVAD); | |||
| perm = perm.Modify(useVoiceActivation: true); | |||
| Assert.True(perm.UseVAD); | |||
| Assert.Equal((ulong)ChannelPermission.UseVAD, perm.RawValue); | |||
| perm = perm.Modify(useVoiceActivation: false); | |||
| Assert.False(perm.UseVAD); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ManageRoles); | |||
| perm = perm.Modify(manageRoles: true); | |||
| Assert.True(perm.ManageRoles); | |||
| Assert.Equal((ulong)ChannelPermission.ManageRoles, perm.RawValue); | |||
| perm = perm.Modify(manageRoles: false); | |||
| Assert.False(perm.ManageRoles); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| // individual permission test | |||
| Assert.False(perm.ManageWebhooks); | |||
| perm = perm.Modify(manageWebhooks: true); | |||
| Assert.True(perm.ManageWebhooks); | |||
| Assert.Equal((ulong)ChannelPermission.ManageWebhooks, perm.RawValue); | |||
| perm = perm.Modify(manageWebhooks: false); | |||
| Assert.False(perm.ManageWebhooks); | |||
| Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | |||
| return Task.CompletedTask; | |||
| } | |||