public void MoveNull() { Assert.Throws <ArgumentNullException> (() => manager.Move(null, new ChannelInfo(1))); Assert.Throws <ArgumentNullException> (() => manager.Move(user, null)); }
private void MoveUser(int moverId, int userId, int channelId) { IConnection requester = null; IUserInfo requestingUser = (moverId == 0) ? null : this.context.Users[moverId]; if (requestingUser != null) { requester = this.context.Users[requestingUser]; } IUserInfo user = this.context.Users[userId]; if (user == null) { return; } ChannelChangeInfo info = (requestingUser != null) ? new ChannelChangeInfo(userId, channelId, user.CurrentChannelId, requestingUser.UserId) : new ChannelChangeInfo(userId, channelId, user.CurrentChannelId); IChannelInfo channel = this.context.Channels[channelId]; if (channel == null) { if (requester != null) { requester.SendAsync(new ChannelChangeResultMessage(ChannelChangeResult.FailedUnknownChannel, info)); } return; } if (!user.Equals(requestingUser)) { if (!this.context.GetPermission(PermissionName.ChangePlayersChannel, channel.ChannelId, moverId)) { if (requester != null) { requester.SendAsync(new ChannelChangeResultMessage(ChannelChangeResult.FailedPermissions, info)); } return; } } else if (!this.context.GetPermission(PermissionName.ChangeChannel, channel.ChannelId, user.UserId)) { if (requester != null) { requester.SendAsync(new ChannelChangeResultMessage(ChannelChangeResult.FailedPermissions, info)); } return; } if (channel.UserLimit != 0 && channel.UserLimit <= context.Users.Count(u => u.CurrentChannelId == channel.ChannelId)) { if (requester != null) { requester.SendAsync(new ChannelChangeResultMessage(ChannelChangeResult.FailedFull, info)); } return; } Manager.Move(user, channel); foreach (IConnection connection in Manager.GetConnections()) { connection.SendAsync(new UserChangedChannelMessage { ChangeInfo = info }); } }