public async Task LoginAsync_Sets_Listen_Port_On_Success_If_Set(string user, string password)
        {
            var port = GetPort();

            var waiter = new Mock <IWaiter>();

            waiter.Setup(m => m.Wait <LoginResponse>(It.IsAny <WaitKey>(), null, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new LoginResponse(true, string.Empty)));

            var conn = new Mock <IMessageConnection>();

            using (var s = new SoulseekClient(serverConnection: conn.Object, waiter: waiter.Object, options: new SoulseekClientOptions(listenPort: port)))
            {
                s.SetProperty("State", SoulseekClientStates.Connected);

                await s.LoginAsync(user, password);

                Assert.Equal(SoulseekClientStates.Connected | SoulseekClientStates.LoggedIn, s.State);
                Assert.Equal(user, s.Username);
            }

            var expectedBytes = new SetListenPortCommand(port).ToByteArray();

            conn.Verify(m => m.WriteAsync(It.Is <byte[]>(b => b.Matches(expectedBytes)), It.IsAny <CancellationToken?>()));
        }
        public void SetListenPort_Instantiates_Properly()
        {
            var port = new Random().Next(1024, 50000);
            var a    = new SetListenPortCommand(port);

            Assert.Equal(port, a.Port);
        }
        public void SetListenPort_Constructs_The_Correct_Message(int port)
        {
            var a   = new SetListenPortCommand(port);
            var msg = a.ToByteArray();

            var reader = new MessageReader <MessageCode.Server>(msg);
            var code   = reader.ReadCode();

            Assert.Equal(MessageCode.Server.SetListenPort, code);
            Assert.Equal(port, reader.ReadInteger());
        }
        public void SetListenPort_Instantiates_Properly(int port)
        {
            var a = new SetListenPortCommand(port);

            Assert.Equal(port, a.Port);
        }