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()); }
public void GenerateAllInitialMovesSingleUnit() { Board board = Board.GetInitialBoard(); IEnumerable <BoardMove> futureMoves = BoardFutures.GetBoardMovesFallSpring(board, new List <MapNode>() { MapNodes.Get("kie") }); Assert.AreEqual(6, futureMoves.Count()); }
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()); }
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()); }
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)); }
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)); }
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()); }
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()); }
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); //} }
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"))); }
public override IEnumerable <UnitMove> GetUnitMoves(Board board) => BoardFutures.GetWinterUnitMoves(board);
public override IEnumerable <UnitMove> GetUnitMoves(Board board) => BoardFutures.GetFallSpringUnitMoves(board);
public IEnumerable <Board> GetWinterBoardFutures(Board board, AllianceScenario allianceScenario) { List <BoardMove> allBoardMoves = GetBoardMovesWinter(board, allianceScenario).ToList(); return(BoardFutures.ApplyAllBoardMoves(board, allBoardMoves)); }
public IEnumerable <Board> GetFallSpringBoardFutures(Board board, AllianceScenario allianceScenario) { IEnumerable <BoardMove> boardMoves = GetBoardMovesFallSpring(board, allianceScenario); return(BoardFutures.ApplyAllBoardMoves(board, boardMoves)); }
public void UnitMovesSort() { var moves = BoardFutures.GetFallSpringUnitMoves(initialBoard).ToList(); moves.Sort(); }
public void NoInitialDisbandUnitMoves() { var moves = BoardFutures.GetFallSpringUnitMoves(initialBoard); Assert.AreEqual(0, moves.Count(m => m.IsDisband)); }
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()); }