示例#1
0
        public static ConcurrentQueue <IGuessGamePlayer> ToConcurrentQueue(
            this IEnumerable <IParserPlayer> playersIncome, IGameRules gameRules,
            IGameResolver gameResolver, IMaintenanceInfo mi)
        {
            var players = new List <Player>(playersIncome.Count());

            players.AddRange(playersIncome.Select(p =>
                                                  Player.NewPlayer(p, gameRules)));

            var chalg     = new CheatPippingGuessHistory(mi);
            var chPlayers = players.InitCheaters(chalg);

            var thisplayers = new ConcurrentQueue <IGuessGamePlayer>();

            foreach (var p in chPlayers)
            {
                thisplayers.Enqueue(p);
            }

            return(thisplayers);
        }
示例#2
0
        public void TestCheatersCreation()
        {
            var mimoq     = new Mock <IMaintenanceInfo>();
            var chalg     = new CheatPippingGuessHistory(mimoq.Object);
            var players   = GetPlayers();
            var chplayers = players.InitCheaters(chalg);

            Assert.AreEqual(5, chplayers.Count());
            var cheaters = chplayers.Where(p => p is ICheaterPlayer);

            Assert.AreEqual(2, cheaters.Count());

            foreach (var ch in cheaters)
            {
                var cheatAlg = ch.GetType().GetField("cheatAlg",
                                                     BindingFlags.NonPublic |
                                                     BindingFlags.Instance |
                                                     BindingFlags.GetField).GetValue(ch);
                Assert.AreEqual(chalg, cheatAlg);
            }
        }