public void RoomSearchRequest_Constructs_The_Correct_Message(string roomName, string searchText, int token)
        {
            var a   = new RoomSearchRequest(roomName, searchText, token);
            var msg = a.ToByteArray();

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

            Assert.Equal(MessageCode.Server.RoomSearch, code);
            Assert.Equal(roomName, reader.ReadString());
            Assert.Equal(token, reader.ReadInteger());
            Assert.Equal(searchText, reader.ReadString());
        }
Exemple #2
0
        public async Task SearchAsync_Sends_RoomSearchRequest_Given_Room_Scope(string searchText, int token, string room)
        {
            var expected = new RoomSearchRequest(room, searchText, token).ToByteArray();

            using (var cts = new CancellationTokenSource(1000))
            {
                var conn = new Mock <IMessageConnection>();
                conn.Setup(m => m.WriteAsync(It.IsAny <byte[]>(), It.IsAny <CancellationToken?>()))
                .Callback(() => cts.Cancel());

                using (var s = new SoulseekClient(serverConnection: conn.Object))
                {
                    s.SetProperty("State", SoulseekClientStates.Connected | SoulseekClientStates.LoggedIn);

                    await Record.ExceptionAsync(() =>
                                                s.SearchAsync(SearchQuery.FromText(searchText), SearchScope.Room(room), token, cancellationToken: cts.Token));
                }

                conn.Verify(m => m.WriteAsync(It.Is <byte[]>(b => b.Matches(expected)), It.IsAny <CancellationToken?>()), Times.Once);
            }
        }