public async Task ReceiveAsyncForwardsParameters()
        {
            var maximumEventCount = 666;
            var maximumWaitTime   = TimeSpan.FromMilliseconds(17);
            var mock     = new ObservableReceiverMock(new ClientMock(), "$Default", "0", TrackOne.EventPosition.FromEnd(), null, new ReceiverOptions());
            var receiver = new TrackOneEventReceiver(() => mock);

            await receiver.ReceiveAsync(maximumEventCount, maximumWaitTime, CancellationToken.None);

            Assert.That(mock.ReceiveInvokeWith.MaxCount, Is.EqualTo(maximumEventCount), "The maximum event count should match.");
            Assert.That(mock.ReceiveInvokeWith.WaitTime, Is.EqualTo(maximumWaitTime), "The maximum wait time should match.");
        }
        public async Task ReceiverIsConstructedCorrectly()
        {
            var consumerGroup = "$TestThing";
            var partition     = "123";
            var position      = EventPosition.FromEnqueuedTime(DateTime.Parse("2015-10-25T12:00:00Z"));
            var priority      = 8765;
            var identifier    = "ThisIsAnAwesomeReceiver!";
            var mock          = new ObservableReceiverMock(new ClientMock(), consumerGroup, partition, TrackOne.EventPosition.FromEnqueuedTime(position.EnqueuedTimeUtc.Value), priority, new ReceiverOptions {
                Identifier = identifier
            });
            var receiver = new TrackOneEventReceiver(() => mock);

            // Invoke an operation to force the sender to be lazily instantiated.  Otherwise,
            // construction does not happen.

            await receiver.ReceiveAsync(0, TimeSpan.Zero, default);

            Assert.That(mock.ConstructedWith.ConsumerGroup, Is.EqualTo(consumerGroup), "The consumer group should match.");
            Assert.That(mock.ConstructedWith.Partition, Is.EqualTo(partition), "The partition should match.");
            Assert.That(TrackOneComparer.IsEventPositionEquivalent(mock.ConstructedWith.Position, position), Is.True, "The starting event position should match.");
            Assert.That(mock.ConstructedWith.Priority, Is.EqualTo(priority), "The exclusive priority should match.");
            Assert.That(mock.ConstructedWith.Options.Identifier, Is.EqualTo(identifier), "The receiver identifier should match.");
        }
 public async Task ReceiveAsyncSendsAnEmptyEnumerableWhenThereAreNoEvents()
 {
     var mock     = new ObservableReceiverMock(new ClientMock(), "$Default", "0", TrackOne.EventPosition.FromEnd(), null, new ReceiverOptions());
     var receiver = new TrackOneEventReceiver(() => mock);
     var results  = await receiver.ReceiveAsync(10, default, default);