public void behaves_correctly_when_in_not_started_state() { _producerRecoveryManager.CheckStatus(); Assert.AreEqual(_producerRecoveryManager.Status, ProducerRecoveryStatus.NotStarted); _producerRecoveryManager.ProcessUserMessage(_messageBuilder.BuildAlive(), MessageInterest.AllMessages); Assert.AreEqual(ProducerRecoveryStatus.NotStarted, _producerRecoveryManager.Status); _producerRecoveryManager.ProcessUserMessage(_messageBuilder.BuildBetStop(), DefaultInterest); Assert.AreEqual(ProducerRecoveryStatus.NotStarted, _producerRecoveryManager.Status); _producerRecoveryManager.ProcessUserMessage(_messageBuilder.BuildOddsChange(), DefaultInterest); Assert.AreEqual(ProducerRecoveryStatus.NotStarted, _producerRecoveryManager.Status); _producerRecoveryManager.ProcessUserMessage(_messageBuilder.BuildSnapshotComplete(1), DefaultInterest); Assert.AreEqual(ProducerRecoveryStatus.NotStarted, _producerRecoveryManager.Status); _producerRecoveryManager.ProcessSystemMessage(_messageBuilder.BuildAlive()); Assert.AreEqual(ProducerRecoveryStatus.Started, _producerRecoveryManager.Status); _timeProvider.AddSeconds(30); _producerRecoveryManager.CheckStatus(); Assert.AreEqual(ProducerRecoveryStatus.Started, _producerRecoveryManager.Status); //get everything to default state CreateTestInstances(); // alive from wrong producer does nothing ... _producerRecoveryManager.ProcessSystemMessage(_messageBuilder.BuildAlive(5)); Assert.AreEqual(ProducerRecoveryStatus.NotStarted, _producerRecoveryManager.Status); // non-subscribed alive changes state _producerRecoveryManager.ProcessSystemMessage(_messageBuilder.BuildAlive(null, null, false)); Assert.AreEqual(ProducerRecoveryStatus.Started, _producerRecoveryManager.Status); }