@@ -17,6 +17,7 @@ namespace Discord | |||||
/// .</para> | /// .</para> | ||||
/// </returns> | /// </returns> | ||||
public const int APIVersion = 6; | public const int APIVersion = 6; | ||||
public const int VoiceAPIVersion = 3; | |||||
/// <summary> | /// <summary> | ||||
/// Gets the Discord.Net version, including the build number. | /// Gets the Discord.Net version, including the build number. | ||||
/// </summary> | /// </summary> | ||||
@@ -138,7 +138,7 @@ namespace Discord | |||||
PermValue createInstantInvite = PermValue.Inherit, | PermValue createInstantInvite = PermValue.Inherit, | ||||
PermValue manageChannel = PermValue.Inherit, | PermValue manageChannel = PermValue.Inherit, | ||||
PermValue addReactions = PermValue.Inherit, | PermValue addReactions = PermValue.Inherit, | ||||
PermValue readMessages = PermValue.Inherit, | |||||
PermValue viewChannel = PermValue.Inherit, | |||||
PermValue sendMessages = PermValue.Inherit, | PermValue sendMessages = PermValue.Inherit, | ||||
PermValue sendTTSMessages = PermValue.Inherit, | PermValue sendTTSMessages = PermValue.Inherit, | ||||
PermValue manageMessages = PermValue.Inherit, | PermValue manageMessages = PermValue.Inherit, | ||||
@@ -155,7 +155,7 @@ namespace Discord | |||||
PermValue useVoiceActivation = PermValue.Inherit, | PermValue useVoiceActivation = PermValue.Inherit, | ||||
PermValue manageRoles = PermValue.Inherit, | PermValue manageRoles = PermValue.Inherit, | ||||
PermValue manageWebhooks = PermValue.Inherit) | PermValue manageWebhooks = PermValue.Inherit) | ||||
: this(0, 0, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||||
: this(0, 0, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||||
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | ||||
moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { } | moveMembers, useVoiceActivation, manageRoles, manageWebhooks) { } | ||||
@@ -167,7 +167,7 @@ namespace Discord | |||||
PermValue? createInstantInvite = null, | PermValue? createInstantInvite = null, | ||||
PermValue? manageChannel = null, | PermValue? manageChannel = null, | ||||
PermValue? addReactions = null, | PermValue? addReactions = null, | ||||
PermValue? readMessages = null, | |||||
PermValue? viewChannel = null, | |||||
PermValue? sendMessages = null, | PermValue? sendMessages = null, | ||||
PermValue? sendTTSMessages = null, | PermValue? sendTTSMessages = null, | ||||
PermValue? manageMessages = null, | PermValue? manageMessages = null, | ||||
@@ -184,7 +184,7 @@ namespace Discord | |||||
PermValue? useVoiceActivation = null, | PermValue? useVoiceActivation = null, | ||||
PermValue? manageRoles = null, | PermValue? manageRoles = null, | ||||
PermValue? manageWebhooks = null) | PermValue? manageWebhooks = null) | ||||
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, readMessages, sendMessages, sendTTSMessages, manageMessages, | |||||
=> new OverwritePermissions(AllowValue, DenyValue, createInstantInvite, manageChannel, addReactions, viewChannel, sendMessages, sendTTSMessages, manageMessages, | |||||
embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | embedLinks, attachFiles, readMessageHistory, mentionEveryone, useExternalEmojis, connect, speak, muteMembers, deafenMembers, | ||||
moveMembers, useVoiceActivation, manageRoles, manageWebhooks); | moveMembers, useVoiceActivation, manageRoles, manageWebhooks); | ||||
@@ -358,10 +358,5 @@ namespace Discord.Rest | |||||
author = RestUser.Create(client, guild, model, webhookId); | author = RestUser.Create(client, guild, model, webhookId); | ||||
return author; | return author; | ||||
} | } | ||||
public static bool IsNsfw(IChannel channel) | |||||
=> IsNsfw(channel.Name); | |||||
public static bool IsNsfw(string channelName) => | |||||
channelName == "nsfw" || channelName.StartsWith("nsfw-"); | |||||
} | } | ||||
} | } |
@@ -23,7 +23,7 @@ namespace Discord.Rest | |||||
private bool _nsfw; | private bool _nsfw; | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this); | |||||
public bool IsNsfw => _nsfw; | |||||
internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id) | internal RestTextChannel(BaseDiscordClient discord, IGuild guild, ulong id) | ||||
: base(discord, guild, id) | : base(discord, guild, id) | ||||
@@ -135,7 +135,7 @@ namespace Discord.Rest | |||||
=> ChannelHelper.GetWebhookAsync(this, Discord, id, options); | => ChannelHelper.GetWebhookAsync(this, Discord, id, options); | ||||
public Task<IReadOnlyCollection<RestWebhook>> GetWebhooksAsync(RequestOptions options = null) | public Task<IReadOnlyCollection<RestWebhook>> GetWebhooksAsync(RequestOptions options = null) | ||||
=> ChannelHelper.GetWebhooksAsync(this, Discord, options); | => ChannelHelper.GetWebhooksAsync(this, Discord, options); | ||||
public Task<ICategoryChannel> GetCategoryAsync(RequestOptions options = null) | public Task<ICategoryChannel> GetCategoryAsync(RequestOptions options = null) | ||||
=> ChannelHelper.GetCategoryAsync(this, Discord, options); | => ChannelHelper.GetCategoryAsync(this, Discord, options); | ||||
@@ -169,7 +169,7 @@ namespace Discord.Rest | |||||
else | else | ||||
return AsyncEnumerable.Empty<IReadOnlyCollection<IMessage>>(); | return AsyncEnumerable.Empty<IReadOnlyCollection<IMessage>>(); | ||||
} | } | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options) | IAsyncEnumerable<IReadOnlyCollection<IMessage>> IMessageChannel.GetMessagesAsync(ulong fromMessageId, Direction dir, int limit, CacheMode mode, RequestOptions options) | ||||
{ | { | ||||
@@ -0,0 +1,10 @@ | |||||
using Newtonsoft.Json; | |||||
namespace Discord.API.Voice | |||||
{ | |||||
internal class HelloEvent | |||||
{ | |||||
[JsonProperty("heartbeat_interval")] | |||||
public int HeartbeatInterval { get; set; } | |||||
} | |||||
} |
@@ -1,5 +1,6 @@ | |||||
#pragma warning disable CS1591 | |||||
#pragma warning disable CS1591 | |||||
using Newtonsoft.Json; | using Newtonsoft.Json; | ||||
using System; | |||||
namespace Discord.API.Voice | namespace Discord.API.Voice | ||||
{ | { | ||||
@@ -14,6 +15,7 @@ namespace Discord.API.Voice | |||||
[JsonProperty("modes")] | [JsonProperty("modes")] | ||||
public string[] Modes { get; set; } | public string[] Modes { get; set; } | ||||
[JsonProperty("heartbeat_interval")] | [JsonProperty("heartbeat_interval")] | ||||
[Obsolete("This field is errorneous and should not be used", true)] | |||||
public int HeartbeatInterval { get; set; } | public int HeartbeatInterval { get; set; } | ||||
} | } | ||||
} | } |
@@ -1,4 +1,4 @@ | |||||
#pragma warning disable CS1591 | |||||
#pragma warning disable CS1591 | |||||
namespace Discord.API.Voice | namespace Discord.API.Voice | ||||
{ | { | ||||
internal enum VoiceOpCode : byte | internal enum VoiceOpCode : byte | ||||
@@ -11,11 +11,19 @@ namespace Discord.API.Voice | |||||
Ready = 2, | Ready = 2, | ||||
/// <summary> C→S - Used to keep the connection alive and measure latency. </summary> | /// <summary> C→S - Used to keep the connection alive and measure latency. </summary> | ||||
Heartbeat = 3, | Heartbeat = 3, | ||||
/// <summary> C←S - Used to reply to a client's heartbeat. </summary> | |||||
HeartbeatAck = 3, | |||||
/// <summary> C←S - Used to provide an encryption key to the client. </summary> | /// <summary> C←S - Used to provide an encryption key to the client. </summary> | ||||
SessionDescription = 4, | SessionDescription = 4, | ||||
/// <summary> C↔S - Used to inform that a certain user is speaking. </summary> | /// <summary> C↔S - Used to inform that a certain user is speaking. </summary> | ||||
Speaking = 5 | |||||
Speaking = 5, | |||||
/// <summary> C←S - Used to reply to a client's heartbeat. </summary> | |||||
HeartbeatAck = 6, | |||||
/// <summary> C→S - Used to resume a connection. </summary> | |||||
Resume = 7, | |||||
/// <summary> C←S - Used to inform the client the heartbeat interval. </summary> | |||||
Hello = 8, | |||||
/// <summary> C←S - Used to acknowledge a resumed connection. </summary> | |||||
Resumed = 9, | |||||
/// <summary> C←S - Used to notify that a client has disconnected. </summary> | |||||
ClientDisconnect = 13, | |||||
} | } | ||||
} | } |
@@ -107,7 +107,7 @@ namespace Discord.Audio | |||||
private async Task OnConnectingAsync() | private async Task OnConnectingAsync() | ||||
{ | { | ||||
await _audioLogger.DebugAsync("Connecting ApiClient").ConfigureAwait(false); | await _audioLogger.DebugAsync("Connecting ApiClient").ConfigureAwait(false); | ||||
await ApiClient.ConnectAsync("wss://" + _url).ConfigureAwait(false); | |||||
await ApiClient.ConnectAsync("wss://" + _url + "?v=" + DiscordConfig.VoiceAPIVersion).ConfigureAwait(false); | |||||
await _audioLogger.DebugAsync("Listening on port " + ApiClient.UdpPort).ConfigureAwait(false); | await _audioLogger.DebugAsync("Listening on port " + ApiClient.UdpPort).ConfigureAwait(false); | ||||
await _audioLogger.DebugAsync("Sending Identity").ConfigureAwait(false); | await _audioLogger.DebugAsync("Sending Identity").ConfigureAwait(false); | ||||
await ApiClient.SendIdentityAsync(_userId, _sessionId, _token).ConfigureAwait(false); | await ApiClient.SendIdentityAsync(_userId, _sessionId, _token).ConfigureAwait(false); | ||||
@@ -216,6 +216,14 @@ namespace Discord.Audio | |||||
{ | { | ||||
switch (opCode) | switch (opCode) | ||||
{ | { | ||||
case VoiceOpCode.Hello: | |||||
{ | |||||
await _audioLogger.DebugAsync("Received Hello").ConfigureAwait(false); | |||||
var data = (payload as JToken).ToObject<HelloEvent>(_serializer); | |||||
_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken); | |||||
} | |||||
break; | |||||
case VoiceOpCode.Ready: | case VoiceOpCode.Ready: | ||||
{ | { | ||||
await _audioLogger.DebugAsync("Received Ready").ConfigureAwait(false); | await _audioLogger.DebugAsync("Received Ready").ConfigureAwait(false); | ||||
@@ -225,8 +233,6 @@ namespace Discord.Audio | |||||
if (!data.Modes.Contains(DiscordVoiceAPIClient.Mode)) | if (!data.Modes.Contains(DiscordVoiceAPIClient.Mode)) | ||||
throw new InvalidOperationException($"Discord does not support {DiscordVoiceAPIClient.Mode}"); | throw new InvalidOperationException($"Discord does not support {DiscordVoiceAPIClient.Mode}"); | ||||
_heartbeatTask = RunHeartbeatAsync(data.HeartbeatInterval, _connection.CancelToken); | |||||
ApiClient.SetUdpEndpoint(data.Ip, data.Port); | ApiClient.SetUdpEndpoint(data.Ip, data.Port); | ||||
await ApiClient.SendDiscoveryAsync(_ssrc).ConfigureAwait(false); | await ApiClient.SendDiscoveryAsync(_ssrc).ConfigureAwait(false); | ||||
@@ -1442,7 +1442,9 @@ namespace Discord.WebSocket | |||||
after = SocketVoiceState.Create(null, data); | after = SocketVoiceState.Create(null, data); | ||||
} | } | ||||
user = guild.GetUser(data.UserId) ?? guild.AddOrUpdateUser(data.Member.Value); //per g250k, this is always sent | |||||
// per g250k, this should always be sent, but apparently not always | |||||
user = guild.GetUser(data.UserId) | |||||
?? (data.Member.IsSpecified ? guild.AddOrUpdateUser(data.Member.Value) : null); | |||||
if (user == null) | if (user == null) | ||||
{ | { | ||||
await UnknownGuildUserAsync(type, data.UserId, guild.Id).ConfigureAwait(false); | await UnknownGuildUserAsync(type, data.UserId, guild.Id).ConfigureAwait(false); | ||||
@@ -26,7 +26,7 @@ namespace Discord.WebSocket | |||||
private bool _nsfw; | private bool _nsfw; | ||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public bool IsNsfw => _nsfw || ChannelHelper.IsNsfw(this); | |||||
public bool IsNsfw => _nsfw; | |||||
/// <inheritdoc /> | /// <inheritdoc /> | ||||
public string Mention => MentionUtils.MentionChannel(Id); | public string Mention => MentionUtils.MentionChannel(Id); | ||||
@@ -68,6 +68,7 @@ namespace Discord | |||||
ulong voiceChannel = (ulong)( | ulong voiceChannel = (ulong)( | ||||
ChannelPermission.CreateInstantInvite | ChannelPermission.CreateInstantInvite | ||||
| ChannelPermission.ManageChannels | | ChannelPermission.ManageChannels | ||||
| ChannelPermission.ViewChannel | |||||
| ChannelPermission.Connect | | ChannelPermission.Connect | ||||
| ChannelPermission.Speak | | ChannelPermission.Speak | ||||
| ChannelPermission.MuteMembers | | ChannelPermission.MuteMembers | ||||
@@ -82,7 +83,7 @@ namespace Discord | |||||
ulong dmChannel = (ulong)( | ulong dmChannel = (ulong)( | ||||
ChannelPermission.ViewChannel | ChannelPermission.ViewChannel | ||||
| ChannelPermission.SendMessages | | ChannelPermission.SendMessages | ||||
| ChannelPermission.EmbedLinks | |||||
| ChannelPermission.EmbedLinks | |||||
| ChannelPermission.AttachFiles | | ChannelPermission.AttachFiles | ||||
| ChannelPermission.ReadMessageHistory | | ChannelPermission.ReadMessageHistory | ||||
| ChannelPermission.UseExternalEmojis | | ChannelPermission.UseExternalEmojis | ||||
@@ -118,7 +119,7 @@ namespace Discord | |||||
// ensure that when modified it works | // ensure that when modified it works | ||||
perm = perm.Modify(createInstantInvite: true); | perm = perm.Modify(createInstantInvite: true); | ||||
Assert.True(perm.CreateInstantInvite); | Assert.True(perm.CreateInstantInvite); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.CreateInstantInvite); | |||||
Assert.Equal((ulong)ChannelPermission.CreateInstantInvite, perm.RawValue); | |||||
// set false again, move on to next permission | // set false again, move on to next permission | ||||
perm = perm.Modify(createInstantInvite: false); | perm = perm.Modify(createInstantInvite: false); | ||||
@@ -130,7 +131,7 @@ namespace Discord | |||||
perm = perm.Modify(manageChannel: true); | perm = perm.Modify(manageChannel: true); | ||||
Assert.True(perm.ManageChannel); | Assert.True(perm.ManageChannel); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageChannels); | |||||
Assert.Equal((ulong)ChannelPermission.ManageChannels, perm.RawValue); | |||||
perm = perm.Modify(manageChannel: false); | perm = perm.Modify(manageChannel: false); | ||||
Assert.False(perm.ManageChannel); | Assert.False(perm.ManageChannel); | ||||
@@ -141,7 +142,7 @@ namespace Discord | |||||
perm = perm.Modify(addReactions: true); | perm = perm.Modify(addReactions: true); | ||||
Assert.True(perm.AddReactions); | Assert.True(perm.AddReactions); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AddReactions); | |||||
Assert.Equal((ulong)ChannelPermission.AddReactions, perm.RawValue); | |||||
perm = perm.Modify(addReactions: false); | perm = perm.Modify(addReactions: false); | ||||
Assert.False(perm.AddReactions); | Assert.False(perm.AddReactions); | ||||
@@ -152,7 +153,7 @@ namespace Discord | |||||
perm = perm.Modify(viewChannel: true); | perm = perm.Modify(viewChannel: true); | ||||
Assert.True(perm.ViewChannel); | Assert.True(perm.ViewChannel); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ViewChannel); | |||||
Assert.Equal((ulong)ChannelPermission.ViewChannel, perm.RawValue); | |||||
perm = perm.Modify(viewChannel: false); | perm = perm.Modify(viewChannel: false); | ||||
Assert.False(perm.ViewChannel); | Assert.False(perm.ViewChannel); | ||||
@@ -163,7 +164,7 @@ namespace Discord | |||||
perm = perm.Modify(sendMessages: true); | perm = perm.Modify(sendMessages: true); | ||||
Assert.True(perm.SendMessages); | Assert.True(perm.SendMessages); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendMessages); | |||||
Assert.Equal((ulong)ChannelPermission.SendMessages, perm.RawValue); | |||||
perm = perm.Modify(sendMessages: false); | perm = perm.Modify(sendMessages: false); | ||||
Assert.False(perm.SendMessages); | Assert.False(perm.SendMessages); | ||||
@@ -174,7 +175,7 @@ namespace Discord | |||||
perm = perm.Modify(sendTTSMessages: true); | perm = perm.Modify(sendTTSMessages: true); | ||||
Assert.True(perm.SendTTSMessages); | Assert.True(perm.SendTTSMessages); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.SendTTSMessages); | |||||
Assert.Equal((ulong)ChannelPermission.SendTTSMessages, perm.RawValue); | |||||
perm = perm.Modify(sendTTSMessages: false); | perm = perm.Modify(sendTTSMessages: false); | ||||
Assert.False(perm.SendTTSMessages); | Assert.False(perm.SendTTSMessages); | ||||
@@ -185,7 +186,7 @@ namespace Discord | |||||
perm = perm.Modify(manageMessages: true); | perm = perm.Modify(manageMessages: true); | ||||
Assert.True(perm.ManageMessages); | Assert.True(perm.ManageMessages); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageMessages); | |||||
Assert.Equal((ulong)ChannelPermission.ManageMessages, perm.RawValue); | |||||
perm = perm.Modify(manageMessages: false); | perm = perm.Modify(manageMessages: false); | ||||
Assert.False(perm.ManageMessages); | Assert.False(perm.ManageMessages); | ||||
@@ -196,7 +197,7 @@ namespace Discord | |||||
perm = perm.Modify(embedLinks: true); | perm = perm.Modify(embedLinks: true); | ||||
Assert.True(perm.EmbedLinks); | Assert.True(perm.EmbedLinks); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.EmbedLinks); | |||||
Assert.Equal((ulong)ChannelPermission.EmbedLinks, perm.RawValue); | |||||
perm = perm.Modify(embedLinks: false); | perm = perm.Modify(embedLinks: false); | ||||
Assert.False(perm.EmbedLinks); | Assert.False(perm.EmbedLinks); | ||||
@@ -207,7 +208,7 @@ namespace Discord | |||||
perm = perm.Modify(attachFiles: true); | perm = perm.Modify(attachFiles: true); | ||||
Assert.True(perm.AttachFiles); | Assert.True(perm.AttachFiles); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.AttachFiles); | |||||
Assert.Equal((ulong)ChannelPermission.AttachFiles, perm.RawValue); | |||||
perm = perm.Modify(attachFiles: false); | perm = perm.Modify(attachFiles: false); | ||||
Assert.False(perm.AttachFiles); | Assert.False(perm.AttachFiles); | ||||
@@ -218,7 +219,7 @@ namespace Discord | |||||
perm = perm.Modify(readMessageHistory: true); | perm = perm.Modify(readMessageHistory: true); | ||||
Assert.True(perm.ReadMessageHistory); | Assert.True(perm.ReadMessageHistory); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ReadMessageHistory); | |||||
Assert.Equal((ulong)ChannelPermission.ReadMessageHistory, perm.RawValue); | |||||
perm = perm.Modify(readMessageHistory: false); | perm = perm.Modify(readMessageHistory: false); | ||||
Assert.False(perm.ReadMessageHistory); | Assert.False(perm.ReadMessageHistory); | ||||
@@ -229,7 +230,7 @@ namespace Discord | |||||
perm = perm.Modify(mentionEveryone: true); | perm = perm.Modify(mentionEveryone: true); | ||||
Assert.True(perm.MentionEveryone); | Assert.True(perm.MentionEveryone); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MentionEveryone); | |||||
Assert.Equal((ulong)ChannelPermission.MentionEveryone, perm.RawValue); | |||||
perm = perm.Modify(mentionEveryone: false); | perm = perm.Modify(mentionEveryone: false); | ||||
Assert.False(perm.MentionEveryone); | Assert.False(perm.MentionEveryone); | ||||
@@ -240,7 +241,7 @@ namespace Discord | |||||
perm = perm.Modify(useExternalEmojis: true); | perm = perm.Modify(useExternalEmojis: true); | ||||
Assert.True(perm.UseExternalEmojis); | Assert.True(perm.UseExternalEmojis); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseExternalEmojis); | |||||
Assert.Equal((ulong)ChannelPermission.UseExternalEmojis, perm.RawValue); | |||||
perm = perm.Modify(useExternalEmojis: false); | perm = perm.Modify(useExternalEmojis: false); | ||||
Assert.False(perm.UseExternalEmojis); | Assert.False(perm.UseExternalEmojis); | ||||
@@ -251,18 +252,18 @@ namespace Discord | |||||
perm = perm.Modify(connect: true); | perm = perm.Modify(connect: true); | ||||
Assert.True(perm.Connect); | Assert.True(perm.Connect); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Connect); | |||||
Assert.Equal((ulong)ChannelPermission.Connect, perm.RawValue); | |||||
perm = perm.Modify(connect: false); | perm = perm.Modify(connect: false); | ||||
Assert.False(perm.Connect); | Assert.False(perm.Connect); | ||||
Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | Assert.Equal(ChannelPermissions.None.RawValue, perm.RawValue); | ||||
// individual permission test | // individual permission test | ||||
Assert.False(perm.Speak); | Assert.False(perm.Speak); | ||||
perm = perm.Modify(speak: true); | perm = perm.Modify(speak: true); | ||||
Assert.True(perm.Speak); | Assert.True(perm.Speak); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.Speak); | |||||
Assert.Equal((ulong)ChannelPermission.Speak, perm.RawValue); | |||||
perm = perm.Modify(speak: false); | perm = perm.Modify(speak: false); | ||||
Assert.False(perm.Speak); | Assert.False(perm.Speak); | ||||
@@ -273,7 +274,7 @@ namespace Discord | |||||
perm = perm.Modify(muteMembers: true); | perm = perm.Modify(muteMembers: true); | ||||
Assert.True(perm.MuteMembers); | Assert.True(perm.MuteMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MuteMembers); | |||||
Assert.Equal((ulong)ChannelPermission.MuteMembers, perm.RawValue); | |||||
perm = perm.Modify(muteMembers: false); | perm = perm.Modify(muteMembers: false); | ||||
Assert.False(perm.MuteMembers); | Assert.False(perm.MuteMembers); | ||||
@@ -284,7 +285,7 @@ namespace Discord | |||||
perm = perm.Modify(deafenMembers: true); | perm = perm.Modify(deafenMembers: true); | ||||
Assert.True(perm.DeafenMembers); | Assert.True(perm.DeafenMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.DeafenMembers); | |||||
Assert.Equal((ulong)ChannelPermission.DeafenMembers, perm.RawValue); | |||||
perm = perm.Modify(deafenMembers: false); | perm = perm.Modify(deafenMembers: false); | ||||
Assert.False(perm.DeafenMembers); | Assert.False(perm.DeafenMembers); | ||||
@@ -295,7 +296,7 @@ namespace Discord | |||||
perm = perm.Modify(moveMembers: true); | perm = perm.Modify(moveMembers: true); | ||||
Assert.True(perm.MoveMembers); | Assert.True(perm.MoveMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.MoveMembers); | |||||
Assert.Equal((ulong)ChannelPermission.MoveMembers, perm.RawValue); | |||||
perm = perm.Modify(moveMembers: false); | perm = perm.Modify(moveMembers: false); | ||||
Assert.False(perm.MoveMembers); | Assert.False(perm.MoveMembers); | ||||
@@ -306,7 +307,7 @@ namespace Discord | |||||
perm = perm.Modify(useVoiceActivation: true); | perm = perm.Modify(useVoiceActivation: true); | ||||
Assert.True(perm.UseVAD); | Assert.True(perm.UseVAD); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.UseVAD); | |||||
Assert.Equal((ulong)ChannelPermission.UseVAD, perm.RawValue); | |||||
perm = perm.Modify(useVoiceActivation: false); | perm = perm.Modify(useVoiceActivation: false); | ||||
Assert.False(perm.UseVAD); | Assert.False(perm.UseVAD); | ||||
@@ -317,7 +318,7 @@ namespace Discord | |||||
perm = perm.Modify(manageRoles: true); | perm = perm.Modify(manageRoles: true); | ||||
Assert.True(perm.ManageRoles); | Assert.True(perm.ManageRoles); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageRoles); | |||||
Assert.Equal((ulong)ChannelPermission.ManageRoles, perm.RawValue); | |||||
perm = perm.Modify(manageRoles: false); | perm = perm.Modify(manageRoles: false); | ||||
Assert.False(perm.ManageRoles); | Assert.False(perm.ManageRoles); | ||||
@@ -328,7 +329,7 @@ namespace Discord | |||||
perm = perm.Modify(manageWebhooks: true); | perm = perm.Modify(manageWebhooks: true); | ||||
Assert.True(perm.ManageWebhooks); | Assert.True(perm.ManageWebhooks); | ||||
Assert.Equal(perm.RawValue, (ulong)ChannelPermission.ManageWebhooks); | |||||
Assert.Equal((ulong)ChannelPermission.ManageWebhooks, perm.RawValue); | |||||
perm = perm.Modify(manageWebhooks: false); | perm = perm.Modify(manageWebhooks: false); | ||||
Assert.False(perm.ManageWebhooks); | Assert.False(perm.ManageWebhooks); | ||||
@@ -169,7 +169,7 @@ namespace Discord | |||||
private async Task CheckChannelCategories(RestCategoryChannel[] categories, RestGuildChannel[] allChannels) | private async Task CheckChannelCategories(RestCategoryChannel[] categories, RestGuildChannel[] allChannels) | ||||
{ | { | ||||
// 2 categories | // 2 categories | ||||
Assert.Equal(categories.Length, 2); | |||||
Assert.Equal(2, categories.Length); | |||||
var cat1 = categories.Where(x => x.Name == "cat1").FirstOrDefault(); | var cat1 = categories.Where(x => x.Name == "cat1").FirstOrDefault(); | ||||
var cat2 = categories.Where(x => x.Name == "cat2").FirstOrDefault(); | var cat2 = categories.Where(x => x.Name == "cat2").FirstOrDefault(); | ||||
@@ -202,7 +202,7 @@ namespace Discord | |||||
Assert.NotNull(voice1); | Assert.NotNull(voice1); | ||||
Assert.NotNull(voice3); | Assert.NotNull(voice3); | ||||
Assert.Equal(voice1.CategoryId, cat2.Id); | Assert.Equal(voice1.CategoryId, cat2.Id); | ||||
var voice1Cat = await voice1.GetCategoryAsync(); | var voice1Cat = await voice1.GetCategoryAsync(); | ||||
Assert.Equal(voice1Cat.Id, cat2.Id); | Assert.Equal(voice1Cat.Id, cat2.Id); | ||||
@@ -1,4 +1,5 @@ | |||||
using System; | using System; | ||||
using System.Linq; | |||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using Xunit; | using Xunit; | ||||
@@ -38,9 +39,13 @@ namespace Discord | |||||
copy = GuildPermissions.Webhook.Modify(); | copy = GuildPermissions.Webhook.Modify(); | ||||
Assert.Equal(GuildPermissions.Webhook.RawValue, copy.RawValue); | 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 | // test GuildPermissions.All | ||||
ulong sumOfAllGuildPermissions = 0; | ulong sumOfAllGuildPermissions = 0; | ||||
foreach(var v in Enum.GetValues(typeof(GuildPermission))) | |||||
foreach(var v in enumValues) | |||||
{ | { | ||||
sumOfAllGuildPermissions |= (ulong)v; | sumOfAllGuildPermissions |= (ulong)v; | ||||
} | } | ||||
@@ -49,9 +54,9 @@ namespace Discord | |||||
Assert.Equal(sumOfAllGuildPermissions, GuildPermissions.All.RawValue); | Assert.Equal(sumOfAllGuildPermissions, GuildPermissions.All.RawValue); | ||||
Assert.Equal((ulong)0, GuildPermissions.None.RawValue); | Assert.Equal((ulong)0, GuildPermissions.None.RawValue); | ||||
// assert that GuildPermissions.All contains the same number of permissions as the | |||||
// assert that GuildPermissions.All contains the same number of permissions as the | |||||
// GuildPermissions enum | // GuildPermissions enum | ||||
Assert.Equal(Enum.GetValues(typeof(GuildPermission)).Length, GuildPermissions.All.ToList().Count); | |||||
Assert.Equal(enumValues.Length, GuildPermissions.All.ToList().Count); | |||||
// assert that webhook has the same raw value | // assert that webhook has the same raw value | ||||
ulong webHookPermissions = (ulong)( | ulong webHookPermissions = (ulong)( | ||||
@@ -76,7 +81,7 @@ namespace Discord | |||||
// ensure that when we modify it the parameter works | // ensure that when we modify it the parameter works | ||||
perm = perm.Modify(createInstantInvite: true); | perm = perm.Modify(createInstantInvite: true); | ||||
Assert.True(perm.CreateInstantInvite); | Assert.True(perm.CreateInstantInvite); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.CreateInstantInvite); | |||||
Assert.Equal((ulong)GuildPermission.CreateInstantInvite, perm.RawValue); | |||||
// set it false again, then move on to the next permission | // set it false again, then move on to the next permission | ||||
perm = perm.Modify(createInstantInvite: false); | perm = perm.Modify(createInstantInvite: false); | ||||
@@ -86,7 +91,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(kickMembers: true); | perm = perm.Modify(kickMembers: true); | ||||
Assert.True(perm.KickMembers); | Assert.True(perm.KickMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.KickMembers); | |||||
Assert.Equal((ulong)GuildPermission.KickMembers, perm.RawValue); | |||||
perm = perm.Modify(kickMembers: false); | perm = perm.Modify(kickMembers: false); | ||||
Assert.False(perm.KickMembers); | Assert.False(perm.KickMembers); | ||||
@@ -95,7 +100,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(banMembers: true); | perm = perm.Modify(banMembers: true); | ||||
Assert.True(perm.BanMembers); | Assert.True(perm.BanMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.BanMembers); | |||||
Assert.Equal((ulong)GuildPermission.BanMembers, perm.RawValue); | |||||
perm = perm.Modify(banMembers: false); | perm = perm.Modify(banMembers: false); | ||||
Assert.False(perm.BanMembers); | Assert.False(perm.BanMembers); | ||||
@@ -104,7 +109,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(administrator: true); | perm = perm.Modify(administrator: true); | ||||
Assert.True(perm.Administrator); | Assert.True(perm.Administrator); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Administrator); | |||||
Assert.Equal((ulong)GuildPermission.Administrator, perm.RawValue); | |||||
perm = perm.Modify(administrator: false); | perm = perm.Modify(administrator: false); | ||||
Assert.False(perm.Administrator); | Assert.False(perm.Administrator); | ||||
@@ -113,7 +118,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageChannels: true); | perm = perm.Modify(manageChannels: true); | ||||
Assert.True(perm.ManageChannels); | Assert.True(perm.ManageChannels); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageChannels); | |||||
Assert.Equal((ulong)GuildPermission.ManageChannels, perm.RawValue); | |||||
perm = perm.Modify(manageChannels: false); | perm = perm.Modify(manageChannels: false); | ||||
Assert.False(perm.ManageChannels); | Assert.False(perm.ManageChannels); | ||||
@@ -122,7 +127,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageGuild: true); | perm = perm.Modify(manageGuild: true); | ||||
Assert.True(perm.ManageGuild); | Assert.True(perm.ManageGuild); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageGuild); | |||||
Assert.Equal((ulong)GuildPermission.ManageGuild, perm.RawValue); | |||||
perm = perm.Modify(manageGuild: false); | perm = perm.Modify(manageGuild: false); | ||||
Assert.False(perm.ManageGuild); | Assert.False(perm.ManageGuild); | ||||
@@ -132,7 +137,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(addReactions: true); | perm = perm.Modify(addReactions: true); | ||||
Assert.True(perm.AddReactions); | Assert.True(perm.AddReactions); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AddReactions); | |||||
Assert.Equal((ulong)GuildPermission.AddReactions, perm.RawValue); | |||||
perm = perm.Modify(addReactions: false); | perm = perm.Modify(addReactions: false); | ||||
Assert.False(perm.AddReactions); | Assert.False(perm.AddReactions); | ||||
@@ -142,7 +147,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(viewAuditLog: true); | perm = perm.Modify(viewAuditLog: true); | ||||
Assert.True(perm.ViewAuditLog); | Assert.True(perm.ViewAuditLog); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewAuditLog); | |||||
Assert.Equal((ulong)GuildPermission.ViewAuditLog, perm.RawValue); | |||||
perm = perm.Modify(viewAuditLog: false); | perm = perm.Modify(viewAuditLog: false); | ||||
Assert.False(perm.ViewAuditLog); | Assert.False(perm.ViewAuditLog); | ||||
@@ -152,7 +157,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(viewChannel: true); | perm = perm.Modify(viewChannel: true); | ||||
Assert.True(perm.ViewChannel); | Assert.True(perm.ViewChannel); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ViewChannel); | |||||
Assert.Equal((ulong)GuildPermission.ViewChannel, perm.RawValue); | |||||
perm = perm.Modify(viewChannel: false); | perm = perm.Modify(viewChannel: false); | ||||
Assert.False(perm.ViewChannel); | Assert.False(perm.ViewChannel); | ||||
@@ -162,7 +167,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(sendMessages: true); | perm = perm.Modify(sendMessages: true); | ||||
Assert.True(perm.SendMessages); | Assert.True(perm.SendMessages); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.SendMessages); | |||||
Assert.Equal((ulong)GuildPermission.SendMessages, perm.RawValue); | |||||
perm = perm.Modify(sendMessages: false); | perm = perm.Modify(sendMessages: false); | ||||
Assert.False(perm.SendMessages); | Assert.False(perm.SendMessages); | ||||
@@ -171,7 +176,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(embedLinks: true); | perm = perm.Modify(embedLinks: true); | ||||
Assert.True(perm.EmbedLinks); | Assert.True(perm.EmbedLinks); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.EmbedLinks); | |||||
Assert.Equal((ulong)GuildPermission.EmbedLinks, perm.RawValue); | |||||
perm = perm.Modify(embedLinks: false); | perm = perm.Modify(embedLinks: false); | ||||
Assert.False(perm.EmbedLinks); | Assert.False(perm.EmbedLinks); | ||||
@@ -180,7 +185,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(attachFiles: true); | perm = perm.Modify(attachFiles: true); | ||||
Assert.True(perm.AttachFiles); | Assert.True(perm.AttachFiles); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.AttachFiles); | |||||
Assert.Equal((ulong)GuildPermission.AttachFiles, perm.RawValue); | |||||
perm = perm.Modify(attachFiles: false); | perm = perm.Modify(attachFiles: false); | ||||
Assert.False(perm.AttachFiles); | Assert.False(perm.AttachFiles); | ||||
@@ -189,7 +194,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(readMessageHistory: true); | perm = perm.Modify(readMessageHistory: true); | ||||
Assert.True(perm.ReadMessageHistory); | Assert.True(perm.ReadMessageHistory); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ReadMessageHistory); | |||||
Assert.Equal((ulong)GuildPermission.ReadMessageHistory, perm.RawValue); | |||||
perm = perm.Modify(readMessageHistory: false); | perm = perm.Modify(readMessageHistory: false); | ||||
Assert.False(perm.ReadMessageHistory); | Assert.False(perm.ReadMessageHistory); | ||||
@@ -198,7 +203,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(mentionEveryone: true); | perm = perm.Modify(mentionEveryone: true); | ||||
Assert.True(perm.MentionEveryone); | Assert.True(perm.MentionEveryone); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MentionEveryone); | |||||
Assert.Equal((ulong)GuildPermission.MentionEveryone, perm.RawValue); | |||||
perm = perm.Modify(mentionEveryone: false); | perm = perm.Modify(mentionEveryone: false); | ||||
Assert.False(perm.MentionEveryone); | Assert.False(perm.MentionEveryone); | ||||
@@ -207,7 +212,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(useExternalEmojis: true); | perm = perm.Modify(useExternalEmojis: true); | ||||
Assert.True(perm.UseExternalEmojis); | Assert.True(perm.UseExternalEmojis); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseExternalEmojis); | |||||
Assert.Equal((ulong)GuildPermission.UseExternalEmojis, perm.RawValue); | |||||
perm = perm.Modify(useExternalEmojis: false); | perm = perm.Modify(useExternalEmojis: false); | ||||
Assert.False(perm.UseExternalEmojis); | Assert.False(perm.UseExternalEmojis); | ||||
@@ -216,7 +221,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(connect: true); | perm = perm.Modify(connect: true); | ||||
Assert.True(perm.Connect); | Assert.True(perm.Connect); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Connect); | |||||
Assert.Equal((ulong)GuildPermission.Connect, perm.RawValue); | |||||
perm = perm.Modify(connect: false); | perm = perm.Modify(connect: false); | ||||
Assert.False(perm.Connect); | Assert.False(perm.Connect); | ||||
@@ -225,7 +230,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(speak: true); | perm = perm.Modify(speak: true); | ||||
Assert.True(perm.Speak); | Assert.True(perm.Speak); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.Speak); | |||||
Assert.Equal((ulong)GuildPermission.Speak, perm.RawValue); | |||||
perm = perm.Modify(speak: false); | perm = perm.Modify(speak: false); | ||||
Assert.False(perm.Speak); | Assert.False(perm.Speak); | ||||
@@ -234,7 +239,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(muteMembers: true); | perm = perm.Modify(muteMembers: true); | ||||
Assert.True(perm.MuteMembers); | Assert.True(perm.MuteMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MuteMembers); | |||||
Assert.Equal((ulong)GuildPermission.MuteMembers, perm.RawValue); | |||||
perm = perm.Modify(muteMembers: false); | perm = perm.Modify(muteMembers: false); | ||||
Assert.False(perm.MuteMembers); | Assert.False(perm.MuteMembers); | ||||
@@ -243,7 +248,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(deafenMembers: true); | perm = perm.Modify(deafenMembers: true); | ||||
Assert.True(perm.DeafenMembers); | Assert.True(perm.DeafenMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.DeafenMembers); | |||||
Assert.Equal((ulong)GuildPermission.DeafenMembers, perm.RawValue); | |||||
perm = perm.Modify(deafenMembers: false); | perm = perm.Modify(deafenMembers: false); | ||||
Assert.False(perm.DeafenMembers); | Assert.False(perm.DeafenMembers); | ||||
@@ -252,7 +257,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(moveMembers: true); | perm = perm.Modify(moveMembers: true); | ||||
Assert.True(perm.MoveMembers); | Assert.True(perm.MoveMembers); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.MoveMembers); | |||||
Assert.Equal((ulong)GuildPermission.MoveMembers, perm.RawValue); | |||||
perm = perm.Modify(moveMembers: false); | perm = perm.Modify(moveMembers: false); | ||||
Assert.False(perm.MoveMembers); | Assert.False(perm.MoveMembers); | ||||
@@ -261,7 +266,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(useVoiceActivation: true); | perm = perm.Modify(useVoiceActivation: true); | ||||
Assert.True(perm.UseVAD); | Assert.True(perm.UseVAD); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.UseVAD); | |||||
Assert.Equal((ulong)GuildPermission.UseVAD, perm.RawValue); | |||||
perm = perm.Modify(useVoiceActivation: false); | perm = perm.Modify(useVoiceActivation: false); | ||||
Assert.False(perm.UseVAD); | Assert.False(perm.UseVAD); | ||||
@@ -270,7 +275,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(changeNickname: true); | perm = perm.Modify(changeNickname: true); | ||||
Assert.True(perm.ChangeNickname); | Assert.True(perm.ChangeNickname); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ChangeNickname); | |||||
Assert.Equal((ulong)GuildPermission.ChangeNickname, perm.RawValue); | |||||
perm = perm.Modify(changeNickname: false); | perm = perm.Modify(changeNickname: false); | ||||
Assert.False(perm.ChangeNickname); | Assert.False(perm.ChangeNickname); | ||||
@@ -279,7 +284,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageNicknames: true); | perm = perm.Modify(manageNicknames: true); | ||||
Assert.True(perm.ManageNicknames); | Assert.True(perm.ManageNicknames); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageNicknames); | |||||
Assert.Equal((ulong)GuildPermission.ManageNicknames, perm.RawValue); | |||||
perm = perm.Modify(manageNicknames: false); | perm = perm.Modify(manageNicknames: false); | ||||
Assert.False(perm.ManageNicknames); | Assert.False(perm.ManageNicknames); | ||||
@@ -288,7 +293,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageRoles: true); | perm = perm.Modify(manageRoles: true); | ||||
Assert.True(perm.ManageRoles); | Assert.True(perm.ManageRoles); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageRoles); | |||||
Assert.Equal((ulong)GuildPermission.ManageRoles, perm.RawValue); | |||||
perm = perm.Modify(manageRoles: false); | perm = perm.Modify(manageRoles: false); | ||||
Assert.False(perm.ManageRoles); | Assert.False(perm.ManageRoles); | ||||
@@ -297,7 +302,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageWebhooks: true); | perm = perm.Modify(manageWebhooks: true); | ||||
Assert.True(perm.ManageWebhooks); | Assert.True(perm.ManageWebhooks); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageWebhooks); | |||||
Assert.Equal((ulong)GuildPermission.ManageWebhooks, perm.RawValue); | |||||
perm = perm.Modify(manageWebhooks: false); | perm = perm.Modify(manageWebhooks: false); | ||||
Assert.False(perm.ManageWebhooks); | Assert.False(perm.ManageWebhooks); | ||||
@@ -306,7 +311,7 @@ namespace Discord | |||||
// individual permission test | // individual permission test | ||||
perm = perm.Modify(manageEmojis: true); | perm = perm.Modify(manageEmojis: true); | ||||
Assert.True(perm.ManageEmojis); | Assert.True(perm.ManageEmojis); | ||||
Assert.Equal(perm.RawValue, (ulong)GuildPermission.ManageEmojis); | |||||
Assert.Equal((ulong)GuildPermission.ManageEmojis, perm.RawValue); | |||||
perm = perm.Modify(manageEmojis: false); | perm = perm.Modify(manageEmojis: false); | ||||
Assert.False(perm.ManageEmojis); | Assert.False(perm.ManageEmojis); | ||||
@@ -77,7 +77,7 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// | |||||
/// Tests that text channel permissions get the right value | /// Tests that text channel permissions get the right value | ||||
/// from the Has method. | /// from the Has method. | ||||
/// </summary> | /// </summary> | ||||
@@ -114,7 +114,7 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// | |||||
/// Tests that no channel permissions get the right value | /// Tests that no channel permissions get the right value | ||||
/// from the Has method. | /// from the Has method. | ||||
/// </summary> | /// </summary> | ||||
@@ -151,7 +151,7 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// | |||||
/// Tests that the dm channel permissions get the right value | /// Tests that the dm channel permissions get the right value | ||||
/// from the Has method. | /// from the Has method. | ||||
/// </summary> | /// </summary> | ||||
@@ -188,7 +188,7 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// | |||||
/// Tests that the group channel permissions get the right value | /// Tests that the group channel permissions get the right value | ||||
/// from the Has method. | /// from the Has method. | ||||
/// </summary> | /// </summary> | ||||
@@ -225,7 +225,7 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// | |||||
/// Tests that the voice channel permissions get the right value | /// Tests that the voice channel permissions get the right value | ||||
/// from the Has method. | /// from the Has method. | ||||
/// </summary> | /// </summary> | ||||
@@ -239,7 +239,7 @@ namespace Discord | |||||
TestHelper(value, ChannelPermission.CreateInstantInvite, true); | TestHelper(value, ChannelPermission.CreateInstantInvite, true); | ||||
TestHelper(value, ChannelPermission.ManageChannels, true); | TestHelper(value, ChannelPermission.ManageChannels, true); | ||||
TestHelper(value, ChannelPermission.AddReactions, false); | TestHelper(value, ChannelPermission.AddReactions, false); | ||||
TestHelper(value, ChannelPermission.ViewChannel, false); | |||||
TestHelper(value, ChannelPermission.ViewChannel, true); | |||||
TestHelper(value, ChannelPermission.SendMessages, false); | TestHelper(value, ChannelPermission.SendMessages, false); | ||||
TestHelper(value, ChannelPermission.SendTTSMessages, false); | TestHelper(value, ChannelPermission.SendTTSMessages, false); | ||||
TestHelper(value, ChannelPermission.ManageMessages, false); | TestHelper(value, ChannelPermission.ManageMessages, false); | ||||
@@ -262,8 +262,8 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// returns the correct value when no permissions are set. | /// returns the correct value when no permissions are set. | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
@@ -305,8 +305,8 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// returns the correct value when all permissions are set. | /// returns the correct value when all permissions are set. | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
@@ -349,8 +349,8 @@ namespace Discord | |||||
/// <summary> | /// <summary> | ||||
/// Tests for the <see cref="Discord.Permissions"/> class. | /// Tests for the <see cref="Discord.Permissions"/> class. | ||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// | |||||
/// Test that that the Has method of <see cref="Discord.GuildPermissions"/> | |||||
/// returns the correct value when webhook permissions are set. | /// returns the correct value when webhook permissions are set. | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
@@ -659,7 +659,7 @@ namespace Discord | |||||
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Allow); | TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Allow); | ||||
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Allow); | TestHelper(value, ChannelPermission.ManageChannels, PermValue.Allow); | ||||
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit); | |||||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Allow); | |||||
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | ||||
@@ -682,7 +682,7 @@ namespace Discord | |||||
TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Deny); | TestHelper(value, ChannelPermission.CreateInstantInvite, PermValue.Deny); | ||||
TestHelper(value, ChannelPermission.ManageChannels, PermValue.Deny); | TestHelper(value, ChannelPermission.ManageChannels, PermValue.Deny); | ||||
TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | TestHelper(value, ChannelPermission.AddReactions, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Inherit); | |||||
TestHelper(value, ChannelPermission.ViewChannel, PermValue.Deny); | |||||
TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.SendMessages, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.SendTTSMessages, PermValue.Inherit); | ||||
TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | TestHelper(value, ChannelPermission.ManageMessages, PermValue.Inherit); | ||||
@@ -709,6 +709,7 @@ namespace Discord | |||||
/// of the OverwritePermissions. | /// of the OverwritePermissions. | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
[Fact] | |||||
public Task TestOverwritePermissionModifyNoParam() | public Task TestOverwritePermissionModifyNoParam() | ||||
{ | { | ||||
// test for all Text allowed, none denied | // test for all Text allowed, none denied | ||||