public void Receive_async_should_return_an_uncompleted_task_when_the_message_does_not_exists() { var subject = new AsyncDropbox<int, int>(); var result = subject.ReceiveAsync(10, Timeout.InfiniteTimeSpan, CancellationToken.None); result.IsCompleted.Should().BeFalse(); }
public void Receive_async_should_complete_when_message_is_posted() { var subject = new AsyncDropbox<int, int>(); var result = subject.ReceiveAsync(10, Timeout.InfiniteTimeSpan, CancellationToken.None); subject.Post(10, 11); result.Result.Should().Be(11); }
public void Receive_async_should_return_a_completed_task_when_then_message_already_exists() { var subject = new AsyncDropbox<int, int>(); subject.Post(10, 11); var result = subject.ReceiveAsync(10, Timeout.InfiniteTimeSpan, CancellationToken.None); result.Result.Should().Be(11); }
public async Task Receive_async_should_remove_message_from_dropbox() { var subject = new AsyncDropbox<int, int>(); subject.Post(10, 11); subject.MessageCount.Should().Be(1); var result = await subject.ReceiveAsync(10, Timeout.InfiniteTimeSpan, CancellationToken.None); subject.MessageCount.Should().Be(0); result.Should().Be(11); }
public void RemoveAllAwaiters_should_return_the_right_number_of_awaiters(int n) { var subject = new AsyncDropbox<int, int>(); for (var i = 0; i < n; i++) { subject.ReceiveAsync(i, Timeout.InfiniteTimeSpan, CancellationToken.None); } subject.AwaiterCount.Should().Be(n); var awaiters = subject.RemoveAllAwaiters(); awaiters.Count().Should().Be(n); subject.AwaiterCount.Should().Be(0); }
// constructors public BinaryConnection(ServerId serverId, EndPoint endPoint, ConnectionSettings settings, IStreamFactory streamFactory, IConnectionInitializer connectionInitializer, IConnectionListener listener) { Ensure.IsNotNull(serverId, "serverId"); _endPoint = Ensure.IsNotNull(endPoint, "endPoint"); _settings = Ensure.IsNotNull(settings, "settings"); _streamFactory = Ensure.IsNotNull(streamFactory, "streamFactory"); _connectionInitializer = Ensure.IsNotNull(connectionInitializer, "connectionInitializer"); _listener = listener; _backgroundTaskCancellationTokenSource = new CancellationTokenSource(); _connectionId = new ConnectionId(serverId); _inboundDropbox = new AsyncDropbox <int, IByteBuffer>(); _outboundQueue = new AsyncQueue <OutboundQueueEntry>(); _state = new InterlockedInt32(State.Initial); }
public void Received_messages_with_the_same_id_should_throw() { var subject = new AsyncDropbox<int, int>(); subject.Post(10, 11); Action act = () => subject.Post(10, 12); act.ShouldThrow<ArgumentException>(); }