Пример #1
0
        public void DefaultConstructor()
        {
            var p = new GuildPermissions();

            Assert.Equal((ulong)0, p.RawValue);
            Assert.Equal(GuildPermissions.None.RawValue, p.RawValue);
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
 private void TestHelper(GuildPermissions value, GuildPermission permission, bool expected = false)
 => TestHelper(value.RawValue, (ulong)permission, expected);
Пример #7
0
        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));
        }