public async Task CanBlockBuffer() { // Arrange var ra = new RabbitAdapter(1); var message1 = new BasicDeliverEventArgs(); var message2 = new BasicDeliverEventArgs(); // Act ra.ConsumeData(null, message1); var consume2Task = Task.Run(() => { ra.ConsumeData(null, message2); }); // Assert await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that consume2 Task will never finished consume2Task.IsCompleted.Should().BeFalse(); var _ = ra.GetAsyncEnumerator().MoveNextAsync(); await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that possible spinWait delay will finished consume2Task.IsCompleted.Should().BeTrue(); }
public void CanReadEmptyEnumerator() { // Arrange var ra = new RabbitAdapter(1); // Act var enumerator = ra.GetAsyncEnumerator(); // Assert enumerator.Should().NotBeNull(); enumerator.MoveNextAsync().IsCompleted.Should().BeFalse(); }
public async Task CanReadEnumerator() { // Arrange var ra = new RabbitAdapter(1); var message = new BasicDeliverEventArgs() { DeliveryTag = 1 }; // Act var enumerator = ra.GetAsyncEnumerator(); var t = enumerator.MoveNextAsync(); // Assert t.IsCompleted.Should().BeFalse(); ra.ConsumeData(null, message); await Task.Delay(1000).ConfigureAwait(false); // Attempts to ensure that continuation from WaitToReadAsync in enumerator will be finished t.IsCompleted.Should().BeTrue(); enumerator.Current.Should().Be(message); }