public void ReceiveMessageAsync__In_Parallel__Is_Synchronized() { var messages = new[] { "a", "b", "c" }.Select(x => { var message = new Message(); message.SetString(x); return(message); }).ToArray(); // send the messages synchronously one after the other - this is not important for the test foreach (var message in messages) { _client.SendMessage(message); } // receive the messages at the same time to verify they are received in order because only one can be handled at a time var receivedTasks = Enumerable.Range(0, messages.Length).Select(_ => _serverAsyncContext.ReceiveMessageAsync(CancellationToken.None)).ToArray(); var receivedMessages = receivedTasks.Select(x => x.GetAwaiter().GetResult()).ToArray(); receivedMessages.Should().HaveCount(3); var values = receivedMessages.Select(m => m.GetString()).ToArray(); values[0].Should().Be("a"); values[1].Should().Be("b"); values[2].Should().Be("c"); }
public void SendTimeout__Throws() { var timeSpan = TimeSpan.FromMilliseconds(100); _socket.Options.SendTimeout = timeSpan; _socket.Options.SendTimeout.Should().Be(timeSpan); // try to send a message without being connected using var message = new Message(); message.SetString("x"); Action send = () => _socket.SendMessage(message); send.Should().Throw <TimeoutException>(); }