Example #1
0
        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.");
        }
Example #2
0
        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.");
        }