public void resetting_not_running_operation_does_nothing()
        {
            var operation = new RecoveryOperation(LiveProducer, _recoveryRequestIssuerMock.Object, new[] { MessageInterest.AllMessages }, 0, false);

            operation.Reset();

            Assert.IsFalse(operation.IsRunning);
            _recoveryRequestIssuerMock.Verify(x => x.RequestRecoveryAfterTimestampAsync(It.IsAny <IProducer>(), It.IsAny <DateTime>(), It.IsAny <int>()), Times.Never);
            _recoveryRequestIssuerMock.Verify(x => x.RequestFullOddsRecoveryAsync(It.IsAny <IProducer>(), It.IsAny <int>()), Times.Never);
        }
        public void operation_can_be_started_after_reset()
        {
            LiveProducer.SetLastTimestampBeforeDisconnect(DateTime.MinValue);
            var operation = new RecoveryOperation(LiveProducer, _recoveryRequestIssuerMock.Object, new[] { MessageInterest.AllMessages }, 0, false);

            Assert.IsTrue(operation.Start());
            _recoveryRequestIssuerMock.Verify(x => x.RequestFullOddsRecoveryAsync(It.IsAny <IProducer>(), It.IsAny <int>()), Times.Once);
            Assert.IsTrue(operation.IsRunning);
            operation.Reset();
            Assert.IsFalse(operation.IsRunning);
            Assert.IsTrue(operation.Start());
            _recoveryRequestIssuerMock.Verify(x => x.RequestFullOddsRecoveryAsync(It.IsAny <IProducer>(), It.IsAny <int>()), Times.Exactly(2));
        }