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); }
public static ChainValidation <Card> GetValidator() { if (_validator != null) { return(_validator); } _validator = new CardSuiteValidation(); _validator.SetSuccessor(new CardValueValidation()); return(_validator); }
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); }
public void ShouldHaveExpectedOrder() { //Arrange ChainValidation chainValidation = new ChainValidation() .Add <PrintTieEndsGameAction>() .Add <ReturnTieEndsGameAction>(); //Act TieEndsGameAction subject = new TieEndsGameAction(); //Assert chainValidation.AssertExpectedChain(subject); }
public void ShouldHaveExpectedOrder() { //Arrange ChainValidation chainValidation = new ChainValidation() .Add <HumanVsComputerGameModeSelectionAction>() .Add <HumanVsHumanGameModeSelectionAction>() .Add <ComputerVsComputerGameModeSelectionAction>(); //Act GameModeSelectionAction subject = new GameModeSelectionAction(); //Assert chainValidation.AssertExpectedChain(subject); }
public void ShouldHaveExpectedOrder() { //Arrange ChainValidation chainValidation = new ChainValidation() .Add <CurrentPlayerWinningSelectMoveAction>() .Add <RandomSpaceSelectMoveAction>(); //Act EasyComputerSelectMoveAction subject = new EasyComputerSelectMoveAction(); //Assert chainValidation.AssertExpectedChain(subject); }
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."); }
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]"); }
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]"); }
public void ShouldNotThrowGivenValidChain() { //Arrange ChainValidation subject = new ChainValidation() .NextClassInChain <LinkA>() .NextClassInChain <LinkB>(); //Act Action action = () => subject.AssertExpectedChainOrder(new LinkHead()); //Assert action.Should().NotThrow(); }
public void ShouldHaveExpectedOrder() { //Arrange ChainValidation chainValidation = new ChainValidation() .Add <HumanFirstPlayerTurn>() .Add <ComputerFirstPlayerTurn>(); //Act PlayerTurnsOrderAction subject = new PlayerTurnsOrderAction(); //Assert chainValidation.AssertExpectedChain(subject); }
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); }
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); }
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); }
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); }