public void GetPlayerMatrix_ShouldBeAbleToMakeAMatrix_WhenCalledUpon() { map = new ListMap(11); map.TakeHex(PlayerType.Red, 1, 1); map.TakeHex(PlayerType.Red, 1, 2); map.TakeHex(PlayerType.Red, 1, 3); map.TakeHex(PlayerType.Red, 1, 4); map.TakeHex(PlayerType.Red, 1, 5); map.TakeHex(PlayerType.Blue, 1, 7); map.TakeHex(PlayerType.Blue, 1, 8); map.TakeHex(PlayerType.Blue, 1, 9); map.TakeHex(PlayerType.Blue, 1, 10); var blueMap = new ListMap(map.Size); blueMap.InjectFrom <CloneInjection>(map); var matrixForPlayer1 = blueMap.GetPlayerMatrix(PlayerType.Blue); TestContext.WriteLine("Player 1 matrix"); TestContext.WriteLine(matrixForPlayer1.ToString()); var matrixForPlayer2 = blueMap.GetPlayerMatrix(PlayerType.Red); TestContext.WriteLine("Player 2 matrix"); TestContext.WriteLine(matrixForPlayer2.ToString()); Assert.AreEqual(matrixForPlayer1, blueMap.HexAt(1, 7).Attached); }
public void TakeHex_ShouldChangeTheOwnerProperty_WhenHexIsUnowned() { map = new ListMap(11); map.TakeHex(PlayerType.Blue, 1, 3); Assert.AreEqual(PlayerType.Blue, map.HexAt(1, 3).Owner); Assert.AreEqual(120, map.Board.Count(x => x.Owner == PlayerType.White)); }
public void TakeHex_ShouldFail_IfHexAskedForIsOutOfBounds() { map = new ListMap(11); var didItWork = map.TakeHex(PlayerType.Blue, -13, 5000); Assert.AreEqual(false, didItWork); Assert.AreEqual(121, map.Board.Count(x => x.Owner == PlayerType.White)); }
public void Inquisitor_ShouldWork() { var map = new ListMap(6); var player = new ListPlayer(1, map.Size, new Config()); map.TakeHex(PlayerType.Red, 3, 3); var inquisitor = new Inquisitor(); var testMap = new ListMap(map.Size); testMap.InjectFrom(map); inquisitor.StartInquisition(testMap, player); // Assert.AreEqual(1, 2); }
public void GetPathForPlayerTest() { var map = new ListMap(11); var player = new ListPlayer(1, 11, new Config()); var redPlayer = new ListPlayer(2, 11, new Config()); var pathfinder = new Pathfinder(map, player.Me); //map.TakeHex(PlayerType.Red, 5, 1); pathfinder = new Pathfinder(map, player.Me); var path = pathfinder.GetPathForPlayer(); //Assert.AreEqual(11, path.Count); map.TakeHex(PlayerType.Red, 3, 2); map.TakeHex(PlayerType.Red, 2, 2); map.TakeHex(PlayerType.Red, 2, 0); map.TakeHex(PlayerType.Red, 2, 1); map.TakeHex(PlayerType.Red, 2, 3); map.TakeHex(PlayerType.Red, 2, 4); map.TakeHex(PlayerType.Red, 2, 5); var blueMap = new ListMap(map.Size); blueMap.InjectFrom <CloneInjection>(map); pathfinder = new Pathfinder(map, redPlayer.Me); path = pathfinder.GetPathForPlayer(); TestContext.WriteLine(pathfinder.GetLog()); path.ForEach(x => map.TakeHex(PlayerType.Red, x.Row, x.Column)); TestContext.WriteLine(map.GetMapMatrix().ToString().Replace('0', '_')); //pathfinder = new Pathfinder(blueMap, player, true); //path = pathfinder.GetPathForPlayer(); //path.ForEach(x => blueMap.TakeHex(PlayerType.Blue, x.Row, x.Column)); //TestContext.WriteLine(pathfinder.GetLog()); //TestContext.WriteLine(blueMap.GetMapMatrix().ToString().Replace('0', '_')); //Assert.AreEqual(11, path.Count); }
public void ScoreBoard_ShouldWork() { var map = new ListMap(11); var bluePlayer = new ListPlayer(1, map.Size, new Config()); var redPlayer = new ListPlayer(2, map.Size, new Config()); map.TakeHex(PlayerType.Red, 1, 1); map.TakeHex(PlayerType.Red, 1, 2); map.TakeHex(PlayerType.Red, 1, 3); map.TakeHex(PlayerType.Red, 1, 4); map.TakeHex(PlayerType.Red, 1, 5); map.TakeHex(PlayerType.Blue, 1, 7); map.TakeHex(PlayerType.Blue, 1, 8); map.TakeHex(PlayerType.Blue, 1, 9); map.TakeHex(PlayerType.Blue, 1, 10); var matrixForPlayer1 = map.GetPlayerMatrix(PlayerType.Blue); TestContext.WriteLine("Player 1 matrix"); TestContext.WriteLine(matrixForPlayer1.ToString()); var matrixForPlayer2 = map.GetPlayerMatrix(PlayerType.Red); TestContext.WriteLine("Player 2 matrix"); TestContext.WriteLine(matrixForPlayer2.ToString()); var appraiser = new Appraiser(); var player1score = appraiser.ScoreFromBoard(map, bluePlayer); var player2score = appraiser.ScoreFromBoard(map, redPlayer); Assert.AreNotEqual(player1score, player2score); Assert.AreEqual(4, player2score); Assert.AreEqual(-4, player1score); }
public void ValueInjecter_ShouldProperlyClone_AFullMap() { map = new ListMap(11); map.TakeHex(PlayerType.Red, 1, 1); map.TakeHex(PlayerType.Red, 1, 2); map.TakeHex(PlayerType.Red, 1, 3); map.TakeHex(PlayerType.Red, 1, 4); map.TakeHex(PlayerType.Red, 1, 5); map.TakeHex(PlayerType.Blue, 1, 7); map.TakeHex(PlayerType.Blue, 1, 8); map.TakeHex(PlayerType.Blue, 1, 9); map.TakeHex(PlayerType.Blue, 1, 10); var newMap = new ListMap(map.Size); newMap.InjectFrom <CloneInjection>(map); Assert.AreEqual(5, newMap.Board.Count(x => x.Owner == PlayerType.Red)); Assert.AreEqual(4, newMap.Board.Count(x => x.Owner == PlayerType.Blue)); Assert.AreEqual(map.HexAt(1, 1).ToTuple(), newMap.HexAt(1, 1).ToTuple()); Assert.AreEqual(map.HexAt(1, 1).Attached, map.HexAt(1, 1).Attached); newMap.TakeHex(PlayerType.Blue, 1, 6); Assert.AreNotEqual(map.Board.Count(x => x.Owner == PlayerType.Blue), newMap.Board.Count(x => x.Owner == PlayerType.Blue)); }
public void GetPossibleMoves_ShouldGivePriorities_Appropriately() { var map = new ListMap(6); var player = new ListPlayer(1, map.Size, new Config()); var player2 = new ListPlayer(2, map.Size, new Config()); map.TakeHex(PlayerType.Blue, 0, 3); map.TakeHex(PlayerType.Red, 3, 3); map.TakeHex(PlayerType.Blue, 2, 3); map.TakeHex(PlayerType.Red, 3, 2); map.TakeHex(PlayerType.Blue, 1, 3); map.TakeHex(PlayerType.Red, 3, 1); var scout = new Pathfinder(map, player.Me); var redScout = new Pathfinder(map, player2.Me); var path = scout.GetPathForPlayer(); var redPath = redScout.GetPathForPlayer(); var inquisitor = new Inquisitor(); var possibleMovesForBlue = inquisitor.GetPossibleMoves(redPath, path, player.Me, map); TestContext.WriteLine("Blue ========="); foreach (var move in path.Where(x => x.Owner == PlayerType.White)) { TestContext.WriteLine(move); } TestContext.WriteLine("Red ========"); foreach (var move in redPath.Where(x => x.Owner == PlayerType.White)) { TestContext.WriteLine(move); } TestContext.WriteLine("Result ========="); foreach (var move in possibleMovesForBlue) { TestContext.WriteLine(move + " " + move.Priority); } }
public void TakeHex_ShouldAttachAllMatrices_WhenAttachingToMultiples() { map = new ListMap(11); map.TakeHex(PlayerType.Red, 1, 1); map.TakeHex(PlayerType.Red, 1, 2); map.TakeHex(PlayerType.Red, 1, 3); map.TakeHex(PlayerType.Red, 1, 4); map.TakeHex(PlayerType.Red, 1, 5); map.TakeHex(PlayerType.Red, 1, 7); map.TakeHex(PlayerType.Red, 1, 8); map.TakeHex(PlayerType.Red, 1, 9); map.TakeHex(PlayerType.Red, 1, 10); Assert.AreEqual(112, map.Board.Count(x => x.Owner == PlayerType.White)); Assert.AreSame(map.HexAt(1, 1).Attached, map.HexAt(1, 4).Attached); map.TakeHex(PlayerType.Red, 1, 6); Assert.AreSame(map.HexAt(1, 1).Attached, map.HexAt(1, 10).Attached); Assert.IsTrue(map.HexAt(1, 1).IsAttachedToRight); Assert.IsFalse(map.HexAt(1, 1).IsAttachedToLeft); map.TakeHex(PlayerType.Red, 1, 0); Assert.IsTrue(map.HexAt(1, 1).IsAttachedToLeft); Assert.IsTrue(map.HexAt(1, 1).IsAttachedToBothEnds()); }