コード例 #1
0
        public void Apply(IEnumerable <IPlayerHandInformation> infos)
        {
            Winner            = WinnerStatus.Unknown;
            WinnerInformation = new PlayerHandInformation();

            m_Grouped.Group(infos);

            foreach (Status status in m_Grouped.Keys)
            {
                IEnumerable <IPlayerHandInformation> statusInfos = m_Grouped [status].ToArray();

                if (statusInfos.Count() == 1)   // todo testing this if
                {
                    Winner            = WinnerStatus.SingleWinner;
                    WinnerInformation = statusInfos.First();
                    return;
                }

                m_Rankings.Apply(statusInfos.ToArray());

                if (WinnerStatus.SingleWinner != m_Rankings.Winner)
                {
                    continue;
                }

                Winner            = m_Rankings.Winner;
                WinnerInformation = m_Rankings.Ranked.First();
            }
        }
コード例 #2
0
        public void Setup()
        {
            m_Info = new PlayerHandInformation();
            IEnumerable <IRule <IPlayerHandInformation> > rules = CreateRules();

            m_Repository = new CardsRankRulesRepository(rules);
            m_Sut        = new CardsRankEngine(m_Repository);
        }
コード例 #3
0
        public CardsRanking(
            [NotNull] IPlayerInformationGroupedByStatus grouped,
            [NotNull] ISameStatusRankingContainer rankings)
        {
            m_Grouped  = grouped;
            m_Rankings = rankings;

            Winner            = WinnerStatus.Unknown;
            WinnerInformation = new PlayerHandInformation();
        }
        public void Setup()
        {
            m_InfoOne   = new PlayerHandInformation();
            m_InfoTwo   = new PlayerHandInformation();
            m_InfoThree = new PlayerHandInformation();

            m_Infos = new[]
            {
                m_InfoOne,
                m_InfoTwo,
                m_InfoThree
            };

            m_Sut = new PlayerInformationGroupedByStatus();
        }
コード例 #5
0
        private IEnumerable <IPlayerHandInformation> CreatePlayerHandInformations(
            [NotNull] IEnumerable <IEnumerable <ICard> > cardsList)
        {
            var infos = new List <IPlayerHandInformation>();

            foreach (IEnumerable <ICard> cards in cardsList)
            {
                var info = new PlayerHandInformation
                {
                    Cards = cards
                };

                infos.Add(info);
            }

            return(infos);
        }
コード例 #6
0
        public void BeforeScenario()
        {
            var stringToCardRank = new StringToCardRankFactory();
            var stringToCard     = new StringToCardFactory();

            stringToCard.Initialize(new CardsBuilder().Cards);

            var cards = new List <ICard>();
            var info  = new PlayerHandInformation
            {
                Cards = cards
            };

            var sut = new CardsRankEngine(new CardsRankRulesRepository(new CardsRankRulesBuilder().Rules));

            ScenarioContext.Current ["ICards"] = cards;
            ScenarioContext.Current ["IPlayerHandInformation"]   = info;
            ScenarioContext.Current ["ICardsRankEngine"]         = sut;
            ScenarioContext.Current ["IStringToCardRankFactory"] = stringToCardRank;
            ScenarioContext.Current ["IStringToCardFactory"]     = stringToCard;
        }