public void UtcNow()
        {
            var startDateTime = DateTime.UtcNow;

            var provider = new UtcNowProvider();
            var result   = provider.UtcNow;

            var endDateTime = DateTime.UtcNow;

            Assert.That(result, Is.GreaterThanOrEqualTo(startDateTime));
            Assert.That(result, Is.LessThanOrEqualTo(endDateTime));
        }
Пример #2
0
        public async Task Test_that_messages_are_rejected_in_right_order()
        {
            var consumerMock = new Mock <IMessageConsumer>();
            var deliveryTagsInActualOrder = new List <ulong>();

            consumerMock
            .Setup(x => x.Reject(It.IsAny <ulong>()))
            .Callback <ulong>(tag => { deliveryTagsInActualOrder.Add(tag); });


            var utcNowProvider = new UtcNowProvider
            {
                NextValue = DateTime.UtcNow
            };

            var rejectManager = new RejectManager
                                (
                EmptyLogFactory.Instance,
                () => utcNowProvider.NextValue
                                );

            var deliveryTagsInExpectedOrder = Enumerable
                                              .Range(0, 999)
                                              .OrderBy(x => Guid.NewGuid())
                                              .Select(x => (ulong)x)
                                              .ToList();

            var rejectAfter = 0;

            foreach (var deliveryTag in deliveryTagsInExpectedOrder)
            {
                rejectManager.ScheduleReject
                (
                    GenerateMessage(deliveryTag, consumerMock.Object),
                    new TimeSpan(rejectAfter++)
                );
            }

            utcNowProvider.NextValue = utcNowProvider.NextValue.AddMilliseconds(rejectAfter);

            rejectManager.Start();

            await rejectManager.StopAsync();


            deliveryTagsInActualOrder
            .Should()
            .Equal(deliveryTagsInExpectedOrder);
        }