public void ReferInvalidFrequentFlyerNumberApplicant() { var application = new Applicant(); DecisionEnum decision = manager.Evaluate(application); Assert.Equal(DecisionEnum.ReferredToHuman, decision); }
public void IsDetailedChangeMoqPropertiesUnitTest() { var application = new Applicant(); application.Age = 30; DecisionEnum decision = manager.EvaluateChangeMoqProperties(application); Assert.Equal(ValidationModeEnum.Detailed, _validator.Object.ValidationMode); }
public void LicenceExpiredApplicant() { var application = new Applicant() { Age = 19 }; DecisionEnum decision = manager.EvaluateProperties(application); Assert.Equal(DecisionEnum.AutoDeclined, decision); }
public void LowIncomeApplicantAutoDeclined() { var application = new Applicant { Id = 1, FirstName = "Alan G. ", LastName = "Huffman", Age = 40, FrequentFlyerNumber = "a", GrossAnnualIncome = 1000 }; DecisionEnum decision = manager.Evaluate(application); Assert.Equal(DecisionEnum.AutoDeclined, decision); }
public void YoungApplicantReferredToHuman() { var application = new Applicant { Id = 1, FirstName = "Alan G. ", LastName = "Huffman", Age = 19, FrequentFlyerNumber = "x", GrossAnnualIncome = 1000 }; DecisionEnum decision = manager.Evaluate(application); Assert.Equal(DecisionEnum.ReferredToHuman, decision); }
//public enum GameStatusEnum //{ // BeforePlayersReady, // BeforeMakingBets, // DealingInitialCards, // AskingDealOrStand, // Competing, // RecyclingCards //} //public GameStatusEnum GameStatus { get; private set; } public IList <AnimationEvent> Next() { DecisionEnum decision = currentPlayer.DealOrStand(); return(HandlePlayerDecision(currentPlayer, decision)); }
/// <summary> /// 处理玩家对于要牌询问的回答 /// </summary> /// <param name="player">玩家</param> /// <param name="decision">玩家决定</param> public IList <AnimationEvent> HandlePlayerDecision(Player player, DecisionEnum decision) { IList <AnimationEvent> animations = new List <AnimationEvent>(); switch (decision) { case DecisionEnum.Undefined: break; case DecisionEnum.Deal: Card card = DealVisibleCard(player.Seat); animations.Add(new DealCardEvent(player.Seat, card)); if (BestSum(player.Seat.Cards) > 21) { if (NextPlayer() == null) { foreach (PlayerSeat playerSeat in playerSeats) { animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet)); } animations.Add(new OverTwentyOneEvent(bankerSeat)); ///发一张牌后庄家爆牌直接结束本轮游戏 进行结算(爆牌动画 结算动画) } else { animations.Add(new OverTwentyOneEvent(player.Seat)); //发一张牌后玩家爆牌 切换用户(爆牌动画切换动画) } } else { } ///发一张牌后正常 不切换用户 break; case DecisionEnum.Stand: Player nextPlayer = NextPlayer(); if (nextPlayer == null) { ///庄家不要牌 直接结束本轮游戏 进行结算(结算动画) foreach (PlayerSeat playerSeat in playerSeats) { animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet)); } } else if (nextPlayer.Seat is BankerSeat) { bool AllFail = true; foreach (Seat seat in playerSeats) { if (BestSum(seat.Cards) <= 21) { AllFail = false; break; } } if (AllFail) { foreach (PlayerSeat playerSeat in playerSeats) { animations.Add(new CompeteEvent(playerSeat, Evaluate(playerSeat.ID, out int bet), bet)); } ///庄家直接获胜(结算动画) } else { animations.Add(new SwitchPlayerEvent(player.Seat, bankerSeat)); ///切换到庄家(切换动画) } } else { animations.Add(new SwitchPlayerEvent(player.Seat, nextPlayer.Seat)); ///切换下一个玩家(切换动画) } break; default: break; } return(animations); }