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()); }
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); } }