Beispiel #1
0
        public void GenerateInitialMovesThree()
        {
            Board board = Board.GetInitialBoard();
            IEnumerable <BoardMove> futureMoves = BoardFutures.GetBoardMovesFallSpring(board, board.OccupiedMapNodes.Where(kvp => kvp.Value.Power == Powers.Germany).Select(kvp => kvp.Key));

            Assert.AreEqual(183, futureMoves.Count());
        }
Beispiel #2
0
        public void GenerateAllInitialMovesSingleUnit()
        {
            Board board = Board.GetInitialBoard();
            IEnumerable <BoardMove> futureMoves = BoardFutures.GetBoardMovesFallSpring(board, new List <MapNode>()
            {
                MapNodes.Get("kie")
            });

            Assert.AreEqual(6, futureMoves.Count());
        }
Beispiel #3
0
        public void GenerateInitialMovesSix()
        {
            Board         board      = Board.GetInitialBoard();
            List <Powers> powersList = new List <Powers>()
            {
                Powers.Germany, Powers.Austria
            };
            IEnumerable <BoardMove> futureMoves = BoardFutures.GetBoardMovesFallSpring(board, board.OccupiedMapNodes.Where(kvp => powersList.Contains(kvp.Value.Power)).Select(kvp => kvp.Key));

            Assert.AreEqual(19620, futureMoves.Count());
        }
Beispiel #4
0
        public void GenerateInitialMovesNine()
        {
            // this is about the upper limit of unit moves to calc at once
            Board         board      = Board.GetInitialBoard();
            List <Powers> powersList = new List <Powers>()
            {
                Powers.Germany, Powers.England, Powers.Austria
            };
            IEnumerable <BoardMove> futureMoves = BoardFutures.GetBoardMovesFallSpring(board, board.OccupiedMapNodes.Where(kvp => powersList.Contains(kvp.Value.Power)).Select(kvp => kvp.Key));

            Assert.AreEqual(1805040, futureMoves.Count());
        }
Beispiel #5
0
        public void DisbandUnitMoveCount()
        {
            Board     board  = Board.GetInitialBoard();
            BoardMove moves1 = new BoardMove();

            moves1.Add(board.GetMove("ven", "tyr"));
            moves1.Add(board.GetMove("vie", "boh"));
            moves1.FillHolds(board);
            board.ApplyMoves(moves1);

            var moves = BoardFutures.GetFallSpringUnitMoves(board);

            Assert.AreEqual(3, moves.Count(m => m.IsDisband));
        }
Beispiel #6
0
        public void ConvoyUnitMoveCount()
        {
            Board     board  = Board.GetInitialBoard();
            BoardMove moves1 = new BoardMove();

            moves1.Add(board.GetMove("edi", "nwg"));
            moves1.Add(board.GetMove("lon", "nth"));
            moves1.Add(board.GetMove("lvp", "yor"));
            moves1.FillHolds(board);
            board.ApplyMoves(moves1);

            var moves = BoardFutures.GetFallSpringUnitMoves(board);

            Assert.AreEqual(9, moves.Count(m => m.IsConvoy));
        }
Beispiel #7
0
        public void GenerateWinterMovesNoEmptyBuilds()
        {
            Board     board = Board.GetInitialBoard();
            BoardMove moves = new BoardMove();

            moves.Add(board.GetMove("tri", "ven"));
            moves.Add(board.GetMove("ven", "pie"));
            moves.Add(board.GetMove("ber", "kie"));
            moves.Add(board.GetMove("kie", "den"));
            moves.Add(board.GetMove("mun", "ruh"));
            moves.Add(board.GetMove("stp_sc", "bot"));
            moves.Add(board.GetMove("sev", "rum"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();


            moves.Clear();
            moves.Add(board.GetMove("bot", "swe"));
            moves.Add(board.GetMove("kie", "hol"));
            moves.Add(board.GetMove("ruh", "bel"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();

            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Germany].Count);
            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Russia].Count);
            Assert.AreEqual(2, board.OwnedSupplyCenters[Powers.Italy].Count);
            Assert.AreEqual(4, board.OwnedSupplyCenters[Powers.Austria].Count);

            var boardMoves = BoardFutures.GetAllBoardMovesWinter(board);

            Assert.IsTrue(boardMoves.All(bm => null != bm.FirstOrDefault(um => um.Edge.Target == MapNodes.Get("mun"))));
            Assert.AreEqual(144, boardMoves.Count());

            //this is the total for when empty builds are included
            //Assert.AreEqual(1944, boardMoves.Count());
        }
Beispiel #8
0
        public void GenerateWinterMovesAustriaOut1902()
        {
            Board     board = Board.GetInitialBoard();
            BoardMove moves = new BoardMove();

            moves.Add(board.GetMove("mun", "boh"));
            moves.Add(board.GetMove("ven", "tri"));
            moves.Add(board.GetMove("vie", "tyr"));
            moves.Add(board.GetMove("bud", "gal"));
            moves.Add(board.GetMove("tri", "alb"));
            moves.Add(board.GetMove("rom", "ven"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();


            moves.Clear();
            moves.Add(board.GetMove("ven", "tri"));
            moves.Add(board.GetMove("tri", "bud"));
            moves.Add(board.GetMove("boh", "vie"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();

            Assert.AreEqual(4, board.OwnedSupplyCenters[Powers.Germany].Count);
            Assert.AreEqual(4, board.OwnedSupplyCenters[Powers.Russia].Count);
            Assert.AreEqual(5, board.OwnedSupplyCenters[Powers.Italy].Count);
            Assert.AreEqual(0, board.OwnedSupplyCenters[Powers.Austria].Count);
            Assert.AreEqual(3, board.OwnedSupplyCenters[Powers.Turkey].Count);
            Assert.AreEqual(3, board.OwnedSupplyCenters[Powers.England].Count);
            Assert.AreEqual(3, board.OwnedSupplyCenters[Powers.France].Count);

            var boardMoves = BoardFutures.GetAllBoardMovesWinter(board);

            Assert.IsTrue(boardMoves.All(bm => null != bm.FirstOrDefault(um => um.Edge.Target == MapNodes.Get("mun"))));
            Assert.IsTrue(boardMoves.All(bm => bm.Where(um => um.Unit.Power == Powers.Austria).All(um => um.IsDisband)));
            Assert.AreEqual(4, boardMoves.Count());
        }
Beispiel #9
0
        public void OccupiedMapNodeGroupsTest()
        {
            var score = new Score <BasicScorer>();

            Board board     = Board.GetInitialBoard();
            int   groupSize = 6;
            OccupiedMapNodeGroups groups      = OccupiedMapNodeGroups.Get(board, groupSize);
            List <BoardMove>      futureMoves = new List <BoardMove>();

            foreach (var group in groups)
            {
                futureMoves.AddRange(BoardFutures.GetBoardMovesFallSpring(board, group));
            }
            Assert.AreEqual(board.OccupiedMapNodes.Count, groups.Count);
            Assert.IsTrue(groups.All(g => g.Count == groupSize));

            // this does not work because I'm back to combinatorial explosion of boards
            //List<BoardMove> combinedMoves = BoardMove.CombineFallSpringPartialMoveLists(futureMoves);
            //foreach(BoardMove boardMove in combinedMoves)
            //{
            //    score.Calculate(board, boardMove);
            //}
        }
Beispiel #10
0
        public void BuildUnitMovesArmyNoNcSc()
        {
            Board     board = Board.GetInitialBoard();
            BoardMove moves = new BoardMove();

            moves.Add(board.GetMove("tri", "ven"));
            moves.Add(board.GetMove("ven", "pie"));
            moves.Add(board.GetMove("ber", "kie"));
            moves.Add(board.GetMove("kie", "den"));
            moves.Add(board.GetMove("mun", "ruh"));
            moves.Add(board.GetMove("stp_sc", "bot"));
            moves.Add(board.GetMove("sev", "rum"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();


            moves.Clear();
            moves.Add(board.GetMove("bot", "swe"));
            moves.Add(board.GetMove("kie", "hol"));
            moves.Add(board.GetMove("ruh", "bel"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();

            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Germany].Count);
            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Russia].Count);
            Assert.AreEqual(2, board.OwnedSupplyCenters[Powers.Italy].Count);
            Assert.AreEqual(4, board.OwnedSupplyCenters[Powers.Austria].Count);

            var unitMoves = BoardFutures.GetWinterUnitMoves(board);

            Assert.IsFalse(unitMoves.Any(um => um.IsBuild &&
                                         um.Unit.UnitType == UnitType.Army &&
                                         um.Edge.Target.ShortName.Contains("_nc")));
        }
Beispiel #11
0
 public override IEnumerable <UnitMove> GetUnitMoves(Board board) => BoardFutures.GetWinterUnitMoves(board);
Beispiel #12
0
 public override IEnumerable <UnitMove> GetUnitMoves(Board board) => BoardFutures.GetFallSpringUnitMoves(board);
Beispiel #13
0
        public IEnumerable <Board> GetWinterBoardFutures(Board board, AllianceScenario allianceScenario)
        {
            List <BoardMove> allBoardMoves = GetBoardMovesWinter(board, allianceScenario).ToList();

            return(BoardFutures.ApplyAllBoardMoves(board, allBoardMoves));
        }
Beispiel #14
0
        public IEnumerable <Board> GetFallSpringBoardFutures(Board board, AllianceScenario allianceScenario)
        {
            IEnumerable <BoardMove> boardMoves = GetBoardMovesFallSpring(board, allianceScenario);

            return(BoardFutures.ApplyAllBoardMoves(board, boardMoves));
        }
Beispiel #15
0
        public void UnitMovesSort()
        {
            var moves = BoardFutures.GetFallSpringUnitMoves(initialBoard).ToList();

            moves.Sort();
        }
Beispiel #16
0
        public void NoInitialDisbandUnitMoves()
        {
            var moves = BoardFutures.GetFallSpringUnitMoves(initialBoard);

            Assert.AreEqual(0, moves.Count(m => m.IsDisband));
        }
Beispiel #17
0
        public void GenerateWinterMovesCorrectNumberOfBuildsPerPower()
        {
            Board     board = Board.GetInitialBoard();
            BoardMove moves = new BoardMove();

            moves.Add(board.GetMove("ber", "kie"));
            moves.Add(board.GetMove("bud", "rum"));
            moves.Add(board.GetMove("con", "bul"));
            moves.Add(board.GetMove("lvp", "edi"));
            moves.Add(board.GetMove("mar", "pie"));
            moves.Add(board.GetMove("mos", "stp"));
            moves.Add(board.GetMove("mun", "ruh"));
            moves.Add(board.GetMove("par", "gas"));
            moves.Add(board.GetMove("rom", "nap"));
            moves.Add(board.GetMove("ven", "tyr"));
            moves.Add(board.GetMove("vie", "tri"));
            moves.Add(board.GetMove("war", "sil"));
            moves.Add(board.GetMove("ank", "con"));
            moves.Add(board.GetMove("bre", "mao"));
            moves.Add(board.GetMove("edi", "nth"));
            moves.Add(board.GetMove("kie", "den"));
            moves.Add(board.GetMove("lon", "eng"));
            moves.Add(board.GetMove("nap", "tys"));
            moves.Add(board.GetMove("sev", "bla"));
            moves.Add(board.GetMove("stp_sc", "bot"));
            moves.Add(board.GetMove("tri", "alb"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();


            moves.Clear();
            moves.Add(board.GetMove("bul", "gre"));
            moves.Add(board.GetMove("gas", "spa"));
            moves.Add(board.GetMove("kie", "hol"));
            moves.Add(board.GetMove("ruh", "bel"));
            moves.Add(board.GetMove("smy", "arm"));
            moves.Add(board.GetMove("stp", "nwy"));
            moves.Add(board.GetMove("tri", "ser"));
            moves.Add(board.GetMove("bot", "swe"));
            moves.Add(board.GetMove("con", "bul_ec"));
            moves.Add(board.GetMove("mao", "por"));
            moves.Add(board.GetMove("tys", "tun"));
            moves.FillHolds(board);
            board.ApplyMoves(moves);
            board.EndTurn();

            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Germany].Count);
            Assert.AreEqual(6, board.OwnedSupplyCenters[Powers.Russia].Count);
            Assert.AreEqual(4, board.OwnedSupplyCenters[Powers.Italy].Count);
            Assert.AreEqual(5, board.OwnedSupplyCenters[Powers.Austria].Count);
            Assert.AreEqual(5, board.OwnedSupplyCenters[Powers.Turkey].Count);
            Assert.AreEqual(3, board.OwnedSupplyCenters[Powers.England].Count);
            Assert.AreEqual(5, board.OwnedSupplyCenters[Powers.France].Count);

            var boardMoves = BoardFutures.GetAllBoardMovesWinter(board);

            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.Germany) == 6));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.Russia) == 6));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.Italy) == 4));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.Austria) == 5));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.Turkey) == 5));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.England) == 3));
            Assert.IsTrue(boardMoves.All(bm => bm.Count(um => um.Unit.Power == Powers.France) == 5));

            //this is the total for when empty builds are included
            //Assert.AreEqual(1944, boardMoves.Count());
        }