public async void MinerStoppedFromGaming() { var mockMiner = new Mock <IMiner>(); mockMiner.SetupProperty(x => x.CurrentState); mockMiner.Object.CurrentState = new MinerStartedFromNoGaming(); var stateHandler = new TrexMiner.MinerStateHandler(mockMiner.Object); var newState = new MinerStoppedFromGaming(); var eventVerification = AddEventHandler(stateHandler, newState); var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState); stateTransitionSuccess.Should().Be(true, "We should be able to stop from gaming if we started from gaming."); mockMiner.Verify(x => x.Stop(), Times.Once, "The miner should ask to stop every time."); mockMiner.Object.CurrentState.Should().Be(newState, "The state value should reflect the new state."); eventVerification().Should().Be(true, "We should be notified during successful state transition."); }
public async void MinerDoesNotStopWhenNotRunning() { var mockMiner = new Mock <IMiner>(); mockMiner.SetupProperty(x => x.CurrentState); var firstState = new MinerStoppedFromUserRequest(); mockMiner.Object.CurrentState = firstState; var stateHandler = new TrexMiner.MinerStateHandler(mockMiner.Object); var newState = new MinerStoppedFromGaming(); var eventVerification = AddVerifyableEventHandler(stateHandler); var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState); stateTransitionSuccess.Should().Be(false, "We should not transition state when not running."); mockMiner.Verify(x => x.Start(), Times.Never); mockMiner.Object.CurrentState.Should().Be(firstState); eventVerification().Should().Be(false, "we should not be notified if state transition failed."); }