コード例 #1
0
        public async void UserCanOnlySuccessfullyStartWhenTheyHavePaused()
        {
            var mockMiner = new Mock <IMiner>();

            mockMiner.SetupProperty(x => x.CurrentState);

            var firstState = new MinerStartedFromNoGaming();

            mockMiner.Object.CurrentState = firstState;

            var stateHandler           = new TrexMiner.MinerStateHandler(mockMiner.Object);
            var newState               = new MinerStartedFromUserRequest();
            var eventVerification      = AddVerifyableEventHandler(stateHandler);
            var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState);

            stateTransitionSuccess.Should().Be(false, "We should not transition state when the user has not paused.");
            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.");
        }
コード例 #2
0
        public async void MinerStartsFromUserRequest()
        {
            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 MinerStartedFromUserRequest();
            var eventVerification      = AddVerifyableEventHandler(stateHandler);
            var stateTransitionSuccess = await stateHandler.TransitionToStateAsync(newState);

            stateTransitionSuccess.Should().Be(true, "We should start when the user asks to resume from a pause.");
            mockMiner.Verify(x => x.Start(), Times.Once);
            mockMiner.Object.CurrentState.Should().Be(newState);
            eventVerification().Should().Be(true, "we should be notified during successful state transition.");
        }