コード例 #1
0
        public static Card Parse(string toParse)
        {
            Card c = null;

            switch (toParse.Length)
            {
            case 2:
                c = new Card(toParse[0].ToString(), toParse[1]);
                break;

            case 3:
                c = new Card(toParse.Substring(0, 2), toParse[2]);
                break;

            default:
                throw new ArgumentException(string.Format("Must be in format VS where V is one of [{0}] and S is one of [{1}]", ValidValues, ValidSuites), nameof(toParse));
            }

            ChainValidation <Card> Validation = CardValidationFactory.GetValidator();

            var validationResult = Validation.Validate(c);

            if (!validationResult.IsValid)
            {
                throw validationResult.Exception;
            }

            return(c);
        }
コード例 #2
0
        public static ChainValidation <Card> GetValidator()
        {
            if (_validator != null)
            {
                return(_validator);
            }

            _validator = new CardSuiteValidation();
            _validator.SetSuccessor(new CardValueValidation());

            return(_validator);
        }
コード例 #3
0
        public UserProcessor()
        {
            userRepository  = new UserRepository();
            principalHelper = new PrincipalHelper();
            operation       = new AuthenticateOperation(AuthenticateUser);
            operation.SetSuccessor(new CreateNewUserOperation(CreateNewUser));

            userCreationValidation = new IsAuthorisedToDoOperationsOnUser(principalHelper, Rights.Create);
            userCreationValidation.SetSuccessor(new ValidateNoDuplicateEmail(userRepository));

            authenticateUserValidation = new ValidateUserExistsInDb(userRepository);
        }
コード例 #4
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <PrintTieEndsGameAction>()
                                              .Add <ReturnTieEndsGameAction>();

            //Act
            TieEndsGameAction subject = new TieEndsGameAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #5
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <HumanVsComputerGameModeSelectionAction>()
                                              .Add <HumanVsHumanGameModeSelectionAction>()
                                              .Add <ComputerVsComputerGameModeSelectionAction>();
            //Act
            GameModeSelectionAction subject = new GameModeSelectionAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #6
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <CurrentPlayerWinningSelectMoveAction>()
                                              .Add <RandomSpaceSelectMoveAction>();

            //Act
            EasyComputerSelectMoveAction subject = new EasyComputerSelectMoveAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #7
0
ファイル: ChainValidationTests.cs プロジェクト: Fyzxs/IMock
        public void ShouldThrowMeaningfulExceptionGivenInvalidChain()
        {
            //Arrange
            ChainValidation subject = new ChainValidation()
                                      .NextClassInChain <LinkA>("Not_The_Field_Name")
                                      .NextClassInChain <LinkA>();

            //Act
            Action action = () => subject.AssertExpectedChainOrder(new LinkHead());

            //Assert
            action.Should().Throw <Exception>().WithMessage("Expected field [name=Not_The_Field_Name] to be of [type=LinkA] but a field [name=Not_The_Field_Name] was not found.");
        }
コード例 #8
0
ファイル: ChainValidationTests.cs プロジェクト: Fyzxs/IMock
        public void ShouldAcceptCustomNames()
        {
            //Arrange
            ChainValidation subject = new ChainValidation()
                                      .NextClassInChain <LinkC>()
                                      .NextClassInChain <LinkA>("_someOtherName");

            //Act
            Action action = () => subject.AssertExpectedChainOrder(new LinkCustom());

            //Assert
            action.Should().Throw <Exception>().WithMessage("Expected [name=_someOtherName] to be of [type=LinkA] but found [type=LinkB]");
        }
コード例 #9
0
ファイル: ChainValidationTests.cs プロジェクト: Fyzxs/IMock
        public void ShouldThrowGivenInvalidChain()
        {
            //Arrange
            ChainValidation subject = new ChainValidation()
                                      .NextClassInChain <LinkA>()
                                      .NextClassInChain <LinkA>();

            //Act
            Action action = () => subject.AssertExpectedChainOrder(new LinkHead());

            //Assert
            action.Should().Throw <Exception>().WithMessage("Expected [name=_nextAction] to be of [type=LinkA] but found [type=LinkB]");
        }
コード例 #10
0
ファイル: ChainValidationTests.cs プロジェクト: Fyzxs/IMock
        public void ShouldNotThrowGivenValidChain()
        {
            //Arrange
            ChainValidation subject = new ChainValidation()
                                      .NextClassInChain <LinkA>()
                                      .NextClassInChain <LinkB>();

            //Act
            Action action = () => subject.AssertExpectedChainOrder(new LinkHead());

            //Assert
            action.Should().NotThrow();
        }
コード例 #11
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <HumanFirstPlayerTurn>()
                                              .Add <ComputerFirstPlayerTurn>();

            //Act
            PlayerTurnsOrderAction subject = new PlayerTurnsOrderAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #12
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <EasyDifficultySelectionAction>()
                                              .Add <MediumDifficultySelectionAction>()
                                              .Add <HardDifficultySelectionAction>();

            //Act
            DifficultySelectionAction subject = new DifficultySelectionAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <CountdownTimerUpdateAction_GuardAgainstNoMore>()
                                              .Add <CountdownTimerUpdateAction_DefaultForeColor>()
                                              .Add <CountdownTimerUpdateAction_RemainingTime>()
                                              .Add <NoOpUpdateAction>();

            //Act
            CountdownTimerUpdateAction_TimerRunning subject = new CountdownTimerUpdateAction_TimerRunning();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #14
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <CountdownTimerElapsedAction_FinishedGuard>()
                                              .Add <CountdownTimerElapsedAction_LastGuard>()
                                              .Add <CountdownTimerElapsedAction_Update>()
                                              .Add <CountdownTimerElapsedAction.NoOp>();

            //Act
            CountdownTimerElapsedAction subject = new CountdownTimerElapsedAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #15
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <GameOverGuardPlayerEndsGameAction>()
                                              .Add <TakeTurnPlayerEndsGameAction>()
                                              .Add <PrintBoardPlayerEndsGameAction>()
                                              .Add <NoWinGuardPlayerEndsGameAction>()
                                              .Add <PrintWinPlayerEndsGameAction>()
                                              .Add <DefaultPlayerEndsGameAction>();

            //Act
            PlayerEndsGameAction subject = new PlayerEndsGameAction();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }
コード例 #16
0
        public void ShouldHaveExpectedOrder()
        {
            //Arrange
            ChainValidation chainValidation = new ChainValidation()
                                              .Add <CountdownTimerUpdateAction_GuardAgainstMore>()
                                              .Add <CountdownTimerUpdateAction_FinishedForeColor>()
                                              .Add <CountdownTimerUpdateAction_RemainingTime>()
                                              .Add <CountdownTimerUpdateAction_EnableSessionStart>()
                                              .Add <CountdownTimerUpdateAction_ShowSessionStart>()
                                              .Add <CountdownTimerUpdateAction_HideShortBreakStart>()
                                              .Add <CountdownTimerUpdateAction_ShowShortBreakOver>()
                                              .Add <CountdownTimerUpdateAction_FormToTop>()
                                              .Add <NoOpUpdateAction>();

            //Act
            ShortBreakTimerUpdateAction_TimerFinished subject = new ShortBreakTimerUpdateAction_TimerFinished();

            //Assert
            chainValidation.AssertExpectedChain(subject);
        }