public void MakeAMoveCauseTokenToCrossMultipleTiles() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); Tile t4 = test.makeTile(0, 1, 2, 7, 4, 5, 3, 6); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("p1", new List <Tile>()); p1.setPosn(new Posn(1, 1, 3)); b.registerPlayer(p1); b.grid[1, 1] = t2; b.grid[1, 3] = t1; b.grid[1, 4] = t3; TurnResult tr = a.playATurn(b, t4); Posn playerPosn = tr.currentPlayers[0].getPlayerPosn(); Assert.IsTrue(playerPosn.returnRow() == 1); Assert.IsTrue(playerPosn.returnCol() == 4); Assert.IsTrue(playerPosn.returnLocationOnTile() == 3); }
public void Player1MoveCausesPlayer2EliminationBeforeFirstTurn() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 2, 1, 5, 3, 4, 6, 7); Board board = new Board(); Admin admin = new Admin(); SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer()); p1.initialize(board); test.setStartPos(board, p1, new Posn(5, 6, 7)); SPlayer p2 = new SPlayer("green", new List <Tile>(), new RandomPlayer()); p2.initialize(board); test.setStartPos(board, p2, new Posn(5, 6, 6)); TurnResult tr = admin.playATurn(board, t1); Posn p1EndPosExpected = new Posn(5, 5, 0); Posn p1EndPosActual = tr.currentPlayers[0].getPlayerPosn(); Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual)); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "green")); Assert.IsTrue(tr.playResult.Exists(x => x.returnColor() == "blue")); }
public void ValidTurnCausePlayerToBeEliminated() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); List <Tile> drawpile = test.makeDrawPile(t2, t3); Admin a = test.createAdminWithDrawPile(drawpile); Board b = new Board(); SPlayer p1 = new SPlayer("p1", new List <Tile>()); Posn p1Pos = new Posn(0, 1, 6); test.setStartPos(b, p1, p1Pos); SPlayer p2 = new SPlayer("p2", new List <Tile>()); Posn p2Pos = new Posn(4, 4, 0); test.setStartPos(b, p2, p2Pos); a.addToActivePlayers(p1); a.addToActivePlayers(p2); TurnResult tmpturn = a.playATurn(b, t1); Assert.AreEqual(1, a.numEliminated(), "count of eliminated players has not increased to 1"); Assert.IsTrue(tmpturn.eliminatedPlayers.Count == 1, "count of eliminated players has not increased to 1"); Assert.IsTrue(tmpturn.eliminatedPlayers.Exists(x => x.getColor() == "p1"), "p1 has not been moved to eliminated players"); Assert.IsFalse(tmpturn.currentPlayers.Exists(x => x.getColor() == "p1"), "p1 has not been removed from current players"); Assert.IsTrue(tmpturn.currentPlayers.Count == 1, "count of current players has not decreased to 1"); }
public void MakeAMoveCauseTokenToCrossMultipleTiles() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); Tile t4 = test.makeTile(0, 1, 2, 7, 4, 5, 3, 6); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 3)); a.addToActivePlayers(p1); b.placeTileAt(t2, 1, 1); b.placeTileAt(t1, 1, 3); b.placeTileAt(t3, 1, 4); TurnResult tr = a.playATurn(b, t4); Posn playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor()); Assert.IsTrue(new Posn(1, 4, 3).isEqual(playerPosn)); }
public void Player1MoveCausesPlayer2MovementBeforeFirstTurn() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 2, 1, 5, 3, 7, 4, 6); Board board = new Board(); Admin admin = new Admin(); SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer()); board.addPlayerToBoard(p1.getColor(), new Posn(5, 6, 7)); SPlayer p2 = new SPlayer("green", new List <Tile>(), new RandomPlayer()); board.addPlayerToBoard(p2.getColor(), new Posn(5, 6, 6)); admin.addToActivePlayers(p1); admin.addToActivePlayers(p2); TurnResult tr = admin.playATurn(board, t1); Posn p1EndPosExpected = new Posn(5, 5, 0); Posn p2EndPosExpected = new Posn(5, 5, 7); Posn p1EndPosActual = board.getPlayerPosn(tr.currentPlayers[1].getColor()); Posn p2EndPosActual = board.getPlayerPosn(tr.currentPlayers[0].getColor()); Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual)); Assert.IsTrue(p2EndPosExpected.isEqual(p2EndPosActual)); }
public void PlayAValidTurnChangesOrderOfInGamePlayers() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); List <Tile> drawpile = test.makeDrawPile(t2, t3); Admin a = test.createAdminWithDrawPile(drawpile); Board b = new Board(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); Posn p1Pos = new Posn(0, 0, 3); SPlayer p2 = new SPlayer("green", new List <Tile>()); Posn p2Pos = new Posn(4, 4, 0); a.addToActivePlayers(p1); a.addToActivePlayers(p2); b.addPlayerToBoard("blue", p1Pos); b.addPlayerToBoard("green", p2Pos); List <SPlayer> l1 = new List <SPlayer>() { p1, p2 }; List <SPlayer> l2 = new List <SPlayer>(); TurnResult tmpturn = a.playATurn(b, t1); Assert.IsTrue(tmpturn.currentPlayers[0].getColor() == "green"); Assert.IsTrue(tmpturn.currentPlayers[1].getColor() == "blue"); Assert.IsTrue(tmpturn.currentPlayers.Count == 2); }
public void MakeAMoveWhenTileIsRotated() { Admin a = new Admin(); Board b = new Board(); List <SPlayer> inGame = new List <SPlayer>(); SPlayer p1 = new SPlayer("p1", new List <Tile>()); p1.setPosn(new Posn(1, 1, 3)); b.registerPlayer(p1); inGame.Add(p1); TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 3, 6, 4, 7, 2, 1, 5); Tile rotatedTile = t1.rotate(); TurnResult tr = a.playATurn(b, rotatedTile); Posn playerPosn = tr.currentPlayers[0].getPlayerPosn(); Assert.IsTrue(playerPosn.returnCol() == 2, "p1 not at correct col"); Assert.IsTrue(playerPosn.returnRow() == 1, "p1 not at correct row"); Assert.IsTrue(playerPosn.returnLocationOnTile() == 0, "p1 not at correct location on tile"); Assert.IsTrue(tr.currentPlayers.Exists(x => x.returnColor() == "p1"), "p1 not in winning players"); }
public void SettingPlayerPosition() { TestScenerios test = new TestScenerios(); Board b = new Board(); SPlayer p1 = test.createPlayerAtPos("blue", new List <Tile>(), new RandomPlayer(), new Posn(1, 2, 3), b); Posn playerPosn = b.getPlayerPosn(p1.getColor()); Assert.IsTrue(playerPosn.isEqual(new Posn(1, 2, 3))); }
public void LocationOnBoardIsNotOccupied() { Board b = new Board(); Posn newPosn = new Posn(0, 0, 3); b.addPlayerToBoard("blue", newPosn); Assert.IsFalse(b.locationOccupied(new Posn(0, 0, 0))); }
public void RandomPlayerPlacesPawnOnEdgeWithNoOtherPlayers() { SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer()); Board b = new Board(); p1.initialize(b); Posn checkPosn = p1.playerStrategy.placePawn(b); Assert.IsFalse(b.locationOccupied(checkPosn)); }
public void SettingPlayerPosition() { SPlayer p1 = new SPlayer(); p1.setPosn(new Posn(1, 2, 3)); Posn playerPosn = p1.getPlayerPosn(); Assert.IsTrue(playerPosn.returnRow() == 1); Assert.IsTrue(playerPosn.returnCol() == 2); Assert.IsTrue(playerPosn.returnLocationOnTile() == 3); }
public void LocationOnBoardIsNotOccupied() { SPlayer p1 = new SPlayer("blue", new List <Tile>()); Board b = new Board(); b.registerPlayer(p1); Posn newPosn = new Posn(0, 0, 3); p1.setPosn(newPosn); Assert.IsFalse(b.locationOccupied(new Posn(0, 0, 0))); }
public void PosnToPawnLocXML() { Posn testPosn1 = new Posn(1, 1, 0); Posn testPosn2 = new Posn(0, 1, 5); XElement pawnLocXML1 = XMLEncoder.posnToPawnLocXML(testPosn1); XElement pawnLocXML2 = XMLEncoder.posnToPawnLocXML(testPosn2); XElement pawnLocXMLExpected = new XElement("pawn-loc", new XElement("h", ""), new XElement("n", 1), new XElement("n", 2)); Assert.IsTrue(XNode.DeepEquals(pawnLocXML1, pawnLocXMLExpected)); Assert.IsTrue(XNode.DeepEquals(pawnLocXML2, pawnLocXMLExpected)); }
public void PlaceTilePlacesTile() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Board b = new Board(); b.addPlayerToBoard("blue", new Posn(0, 0, 3)); Posn endPos = b.placeTile("blue", t1); Assert.IsTrue(endPos.returnCol() == 1); Assert.IsTrue(endPos.returnRow() == 0); Assert.IsTrue(endPos.returnLocationOnTile() == 3); Assert.IsTrue(b.getTileAt(0, 1) != null); }
public void MakeMoveWhereMultiplePlayersEliminated() { Admin a = new Admin(); Board b = new Board(); TestScenerios test = new TestScenerios(); //tile to be placed Tile t1 = test.makeTile(7, 0, 6, 1, 5, 4, 2, 3); //tile the player is on Tile t2 = test.makeTile(1, 3, 0, 5, 2, 7, 4, 6); test.putTileOnBoard(t2, b, 1, 1); //players to be eliminated SPlayer elim1 = new SPlayer("elim1", new List <Tile>()); elim1.setPosn(new Posn(0, 0, 2)); elim1.playerState = SPlayer.State.Playing; SPlayer elim2 = new SPlayer("elim2", new List <Tile>()); elim2.setPosn(new Posn(0, 0, 3)); elim2.playerState = SPlayer.State.Playing; //player left over SPlayer p1 = new SPlayer("p1", new List <Tile>()); p1.setPosn(new Posn(1, 1, 0)); p1.playerState = SPlayer.State.Playing; b.registerPlayer(p1); b.registerPlayer(elim1); b.registerPlayer(elim2); TurnResult tr = a.playATurn(b, t1); Posn playerPosn = tr.currentPlayers[0].getPlayerPosn(); Assert.AreEqual(playerPosn.returnLocationOnTile(), 3, "Remaining player not at location 3 on tile"); Assert.IsTrue(playerPosn.returnCol() == 1); Assert.IsTrue(playerPosn.returnRow() == 1); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "elim1"), "eliminated player is in eliminated list"); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.returnColor() == "elim2"), "eliminated player is in eliminated list"); Assert.IsNotNull(tr.playResult); Assert.IsTrue(tr.playResult.Exists(x => x.returnColor() == "p1"), "p1 not in the winning list of players"); Assert.AreEqual(tr.playResult.Count, 1); }
public void PlaceTilePlacesTile() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); SPlayer p1 = new SPlayer("blue", new List <Tile>(), new RandomPlayer()); Board b = new Board(); p1.setPosn(new Posn(0, 0, 3)); Posn endPos = b.placeTile(p1, t1); Assert.IsTrue(endPos.returnCol() == 1); Assert.IsTrue(endPos.returnRow() == 0); Assert.IsTrue(endPos.returnLocationOnTile() == 3); Assert.IsTrue(b.occupied(0, 1)); }
public void MakeAMoveCauseMultiplePlayersToMove() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 2, 1, 6, 3, 5, 4, 7); Tile t2 = test.makeTile(0, 1, 2, 7, 3, 4, 5, 6); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("p1", new List <Tile>()); p1.setPosn(new Posn(1, 0, 2)); SPlayer p2 = new SPlayer("p2", new List <Tile>()); p2.setPosn(new Posn(0, 1, 5)); SPlayer p3 = new SPlayer("p3", new List <Tile>()); p3.setPosn(new Posn(1, 2, 6)); b.registerPlayer(p1); b.registerPlayer(p2); b.registerPlayer(p3); b.grid[1, 2] = t2; TurnResult tr = a.playATurn(b, t1); Posn playerPosn0 = tr.currentPlayers[0].getPlayerPosn(); Posn playerPosn1 = tr.currentPlayers[1].getPlayerPosn(); Posn playerPosn2 = tr.currentPlayers[2].getPlayerPosn(); Assert.IsTrue(playerPosn0.returnRow() == 1); Assert.IsTrue(playerPosn0.returnCol() == 2); Assert.IsTrue(playerPosn0.returnLocationOnTile() == 2); Assert.IsTrue(playerPosn1.returnRow() == 1); Assert.IsTrue(playerPosn1.returnCol() == 1); Assert.IsTrue(playerPosn1.returnLocationOnTile() == 5); Assert.IsTrue(playerPosn2.returnRow() == 1); Assert.IsTrue(playerPosn2.returnCol() == 1); Assert.IsTrue(playerPosn2.returnLocationOnTile() == 4); Assert.IsNull(tr.playResult); }
public void MakeMoveWhereMultiplePlayersEliminated() { Admin a = new Admin(); Board b = new Board(); TestScenerios test = new TestScenerios(); //tile to be placed Tile t1 = test.makeTile(7, 0, 6, 1, 5, 4, 2, 3); //tile the player is on Tile t2 = test.makeTile(1, 3, 0, 5, 2, 7, 4, 6); test.putTileOnBoard(t2, b, 1, 1); //players to be eliminated SPlayer elim1 = new SPlayer("blue", new List <Tile>()); b.addPlayerToBoard(elim1.getColor(), new Posn(0, 0, 2)); elim1.playerState = SPlayer.State.Playing; SPlayer elim2 = new SPlayer("green", new List <Tile>()); b.addPlayerToBoard(elim2.getColor(), new Posn(0, 0, 3)); elim2.playerState = SPlayer.State.Playing; //player left over SPlayer p1 = new SPlayer("hotpink", new List <Tile>()); b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 0)); p1.playerState = SPlayer.State.Playing; a.addToActivePlayers(elim1); a.addToActivePlayers(elim2); a.addToActivePlayers(p1); TurnResult tr = a.playATurn(b, t1); Posn playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor()); Assert.IsTrue(playerPosn.isEqual(new Posn(1, 1, 3))); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "blue"), "eliminated player is in eliminated list"); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "green"), "eliminated player is in eliminated list"); Assert.IsNotNull(tr.playResult); Assert.IsTrue(tr.playResult.Exists(x => x.getColor() == "hotpink"), "p1 not in the winning list of players"); Assert.AreEqual(tr.playResult.Count, 1); }
public void MakingAMoveFromTheEdge() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("p1", new List <Tile>()); p1.setPosn(new Posn(0, -1, 3)); b.registerPlayer(p1); TurnResult tr = a.playATurn(b, t1); Posn playerPosn = tr.currentPlayers[0].getPlayerPosn(); Assert.IsTrue(playerPosn.returnLocationOnTile() == 3); Assert.IsTrue(playerPosn.returnRow() == 0); Assert.IsTrue(playerPosn.returnCol() == 0); }
public void GenerateRandomStartPosition() { Posn generatedPosn = AutomatedPlayer.generateRandomStartPosn(); // One position coordinate must be a phantom coordinate Boolean rowIsPhantom = (generatedPosn.returnRow() == -1 || generatedPosn.returnRow() == 6); Boolean colIsPhantom = (generatedPosn.returnCol() == -1 || generatedPosn.returnCol() == 6); Assert.IsTrue(rowIsPhantom ^ colIsPhantom); // Other position coordinate must be valid board coordinate if (rowIsPhantom) { Assert.IsTrue(generatedPosn.returnCol() >= 0 && generatedPosn.returnCol() <= 5); } else { Assert.IsTrue(generatedPosn.returnRow() >= 0 && generatedPosn.returnRow() <= 5); } }
public void PlayAValidTurnRemovesTileFromDrawPile() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); Admin a = new Admin(); List <Tile> drawpile = test.makeDrawPile(t2, t3); Board b = test.createBoardWithDrawPile(drawpile); SPlayer p1 = new SPlayer("p1", new List <Tile>()); Posn p1Pos = new Posn(0, 0, 3); p1.setPosn(p1Pos); SPlayer p2 = new SPlayer("p2", new List <Tile>()); Posn p2Pos = new Posn(4, 4, 0); p2.setPosn(p2Pos); b.registerPlayer(p1); b.registerPlayer(p2); List <SPlayer> l1 = new List <SPlayer>() { p1, p2 }; List <SPlayer> l2 = new List <SPlayer>(); TurnResult tmpturn = a.playATurn(b, t1); Assert.AreEqual(1, tmpturn.drawPile.Count); Assert.IsFalse(tmpturn.drawPile.Exists(x => x.isEqual(t2))); List <Tile> hand = tmpturn.currentPlayers[1].returnHand(); Assert.IsTrue(hand.Exists(x => x.isEqual(t2))); }
public void PlayAValidTurnRemovesTileFromDrawPile() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); List <Tile> drawpile = test.makeDrawPile(t2, t3); Admin a = test.createAdminWithDrawPile(drawpile); Board b = new Board(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); Posn p1Pos = new Posn(0, 0, 3); b.addPlayerToBoard(p1.getColor(), p1Pos); SPlayer p2 = new SPlayer("hotpink", new List <Tile>()); Posn p2Pos = new Posn(4, 4, 0); b.addPlayerToBoard(p2.getColor(), p2Pos); a.addToActivePlayers(p1); a.addToActivePlayers(p2); List <SPlayer> l1 = new List <SPlayer>() { p1, p2 }; List <SPlayer> l2 = new List <SPlayer>(); TurnResult tmpturn = a.playATurn(b, t1); Assert.AreEqual(1, tmpturn.drawPile.Count); Assert.IsFalse(tmpturn.drawPile.Exists(x => x.isEqualOrRotation(t2))); List <Tile> hand = tmpturn.currentPlayers[1].getHand(); Assert.IsTrue(hand.Exists(x => x.isEqualOrRotation(t2))); }
public void MakingAMoveFromTheEdge() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); Posn p1Pos = new Posn(0, -1, 3); b.addPlayerToBoard(p1.getColor(), p1Pos); a.addToActivePlayers(p1); TurnResult tr = a.playATurn(b, t1); Posn newp1Pos = b.getPlayerPosn(a.getFirstActivePlayer().getColor()); Assert.IsTrue(new Posn(0, 0, 3).isEqual(newp1Pos)); //Posn playerPosn = tr.currentPlayers[0].getPlayerPosn(); }
public void MakeAMoveCauseMultiplePlayersToMove() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 2, 1, 6, 3, 5, 4, 7); Tile t2 = test.makeTile(0, 1, 2, 7, 3, 4, 5, 6); Admin a = new Admin(); Board b = new Board(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); b.addPlayerToBoard(p1.getColor(), new Posn(1, 0, 2)); SPlayer p2 = new SPlayer("green", new List <Tile>()); b.addPlayerToBoard(p2.getColor(), new Posn(0, 1, 5)); SPlayer p3 = new SPlayer("hotpink", new List <Tile>()); b.addPlayerToBoard(p3.getColor(), new Posn(1, 2, 6)); a.addToActivePlayers(p1); a.addToActivePlayers(p2); a.addToActivePlayers(p3); b.placeTileAt(t2, 1, 2); TurnResult tr = a.playATurn(b, t1); Posn playerPosn0 = b.getPlayerPosn(tr.currentPlayers[0].getColor()); Posn playerPosn1 = b.getPlayerPosn(tr.currentPlayers[1].getColor()); Posn playerPosn2 = b.getPlayerPosn(tr.currentPlayers[2].getColor()); Assert.IsTrue(playerPosn0.isEqual(new Posn(1, 2, 2))); Assert.IsTrue(playerPosn1.isEqual(new Posn(1, 1, 5))); Assert.IsTrue(playerPosn2.isEqual(new Posn(1, 1, 4))); Assert.IsNull(tr.playResult); }
public void MakeAMoveWhenTileIsRotated() { Admin a = new Admin(); Board b = new Board(); List <SPlayer> inGame = new List <SPlayer>(); SPlayer p1 = new SPlayer("blue", new List <Tile>()); b.addPlayerToBoard(p1.getColor(), new Posn(1, 1, 3)); a.addToActivePlayers(p1); inGame.Add(p1); TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 3, 6, 4, 7, 2, 1, 5); Tile rotatedTile = t1.rotate(); TurnResult tr = a.playATurn(b, rotatedTile); Posn playerPosn = b.getPlayerPosn(tr.currentPlayers[0].getColor()); Assert.IsTrue(playerPosn.isEqual(new Posn(1, 2, 0))); Assert.IsTrue(tr.currentPlayers.Exists(x => x.getColor() == "blue"), "p1 not in winning players"); }
public void xmlToPosn() { XElement xmlPosn = new XElement("pawn-loc", new XElement("h", ""), new XElement("n", 1), new XElement("n", 4)); Posn posnExpected1 = new Posn(1, 2, 0); Posn posnExpected2 = new Posn(0, 2, 5); List <Posn> expected = new List <Posn> { posnExpected1, posnExpected2 }; List <Posn> actual = XMLDecoder.xmlToPosn(xmlPosn); Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected1))); Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected2))); Assert.AreEqual(actual.Count, expected.Count); XElement xmlPosn2 = new XElement("pawn-loc", new XElement("v", ""), new XElement("n", 3), new XElement("n", 6)); posnExpected1 = new Posn(3, 2, 2); posnExpected2 = new Posn(3, 3, 7); expected = new List <Posn> { posnExpected1, posnExpected2 }; actual = XMLDecoder.xmlToPosn(xmlPosn2); Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected1))); Assert.IsTrue(actual.Exists(x => x.isEqual(posnExpected2))); Assert.AreEqual(actual.Count, expected.Count); }
public void Player1MoveCausesPlayer2EliminationBeforeFirstTurn() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 2, 1, 5, 3, 4, 6, 7); Board board = new Board(); Admin admin = new Admin(); SPlayer p1 = test.createPlayerAtPos("blue", new List <Tile>(), new RandomPlayer(), new Posn(5, 6, 7), board); SPlayer p2 = test.createPlayerAtPos("green", new List <Tile>(), new RandomPlayer(), new Posn(5, 6, 6), board); admin.addToActivePlayers(p1); admin.addToActivePlayers(p2); TurnResult tr = admin.playATurn(board, t1); Posn p1EndPosExpected = new Posn(5, 5, 0); Posn p1EndPosActual = board.getPlayerPosn(tr.currentPlayers[0].getColor()); Assert.IsTrue(p1EndPosExpected.isEqual(p1EndPosActual)); Assert.IsTrue(tr.eliminatedPlayers.Exists(x => x.getColor() == "green")); Assert.IsTrue(tr.playResult.Exists(x => x.getColor() == "blue")); }
public void PlayAValidTurnChangesOrderOfInGamePlayers() { TestScenerios test = new TestScenerios(); Tile t1 = test.makeTile(0, 1, 2, 4, 3, 6, 5, 7); Tile t2 = test.makeTile(0, 6, 1, 5, 2, 4, 3, 7); Tile t3 = test.makeTile(0, 5, 1, 4, 2, 7, 3, 6); Admin a = new Admin(); List <Tile> drawpile = test.makeDrawPile(t2, t3); Board b = test.createBoardWithDrawPile(drawpile); SPlayer p1 = new SPlayer("p1", new List <Tile>()); Posn p1Pos = new Posn(0, 0, 3); p1.setPosn(p1Pos); SPlayer p2 = new SPlayer("p2", new List <Tile>()); Posn p2Pos = new Posn(4, 4, 0); p2.setPosn(p2Pos); b.registerPlayer(p1); b.registerPlayer(p2); List <SPlayer> l1 = new List <SPlayer>() { p1, p2 }; List <SPlayer> l2 = new List <SPlayer>(); TurnResult tmpturn = a.playATurn(b, t1); Assert.IsTrue(tmpturn.currentPlayers[0].returnColor() == "p2"); Assert.IsTrue(tmpturn.currentPlayers[1].returnColor() == "p1"); Assert.IsTrue(tmpturn.currentPlayers.Count == 2); }
public void RunATournament() { int numOfTournaments = 10; int randomWins = 0; int lstSymWins = 0; int mostSymWins = 0; for (int i = 0; i < numOfTournaments; i++) { Admin a = new Admin(); List <Tile> drawPile = a.initializeDrawPile("drawPilepaths.txt"); Board b = new Board(); b.drawPile = drawPile; List <string> allPlayers = new List <string>() { "blue", "hotpink", "green" }; SPlayer randomPlayer = new SPlayer(allPlayers[0], new List <Tile>(), new RandomPlayer()); randomPlayer.initialize(b); randomPlayer.placePawn(b); SPlayer leastSymPlayer = new SPlayer(allPlayers[1], new List <Tile>(), new LeastSymmetricPlayer()); leastSymPlayer.initialize(b); leastSymPlayer.placePawn(b); SPlayer mostSymPlayer = new SPlayer(allPlayers[2], new List <Tile>(), new MostSymmetricPlayer()); mostSymPlayer.initialize(b); mostSymPlayer.placePawn(b); a.dealTiles(new List <SPlayer> { randomPlayer, leastSymPlayer, mostSymPlayer }, b); List <SPlayer> winners = null; foreach (string color in b.getPlayerOrder()) { Posn tempPosn = b.getPlayerPosn(color); Debug.WriteLine(color + " is at: " + string.Format("{0} {1} {2}", tempPosn.returnRow(), tempPosn.returnCol(), tempPosn.returnLocationOnTile())); } SPlayer currentPlayer = b.getFirstActivePlayer(); Tile playTile = currentPlayer.playTurn(b, drawPile.Count); Debug.WriteLine(currentPlayer.returnColor() + " Turn"); Debug.WriteLine("Playing Tile:"); Debug.WriteLine(playTile.paths[0].loc1 + " " + playTile.paths[0].loc2); Debug.WriteLine(playTile.paths[1].loc1 + " " + playTile.paths[1].loc2); Debug.WriteLine(playTile.paths[2].loc1 + " " + playTile.paths[2].loc2); Debug.WriteLine(playTile.paths[3].loc1 + " " + playTile.paths[3].loc2); TurnResult tr = a.playATurn(b, playTile); //Debug.WriteLine("Eliminated: "); foreach (SPlayer p1 in tr.eliminatedPlayers) { //Debug.WriteLine(p1.returnColor()); } while (winners == null) { foreach (string color in b.getPlayerOrder()) { Posn tempPosn = b.getPlayerPosn(color); Debug.WriteLine(color + " is at: " + string.Format("{0} {1} {2}", tempPosn.returnRow(), tempPosn.returnCol(), tempPosn.returnLocationOnTile())); } SPlayer p = b.getFirstActivePlayer(); playTile = p.playTurn(b, drawPile.Count); Debug.WriteLine(p.returnColor() + " Turn"); Debug.WriteLine("Playing Tile:"); Debug.WriteLine(playTile.paths[0].loc1 + " " + playTile.paths[0].loc2); Debug.WriteLine(playTile.paths[1].loc1 + " " + playTile.paths[1].loc2); Debug.WriteLine(playTile.paths[2].loc1 + " " + playTile.paths[2].loc2); Debug.WriteLine(playTile.paths[3].loc1 + " " + playTile.paths[3].loc2); tr = a.playATurn(tr.b, playTile); Debug.WriteLine("Eliminated: "); foreach (SPlayer p1 in tr.eliminatedPlayers) { Debug.WriteLine(p1.returnColor()); } winners = tr.playResult; } foreach (SPlayer p in winners) { if (p.returnColor() == "blue") { randomWins++; } else if (p.returnColor() == "hotpink") { lstSymWins++; } else { mostSymWins++; } Debug.WriteLine(p.returnColor() + " has won!"); } } Console.WriteLine("Random Player Wins: " + randomWins + "/" + numOfTournaments); Console.WriteLine("Least Symmetric Player Wins: " + lstSymWins + "/" + numOfTournaments); Console.WriteLine("Most Symmetric Player Wins: " + mostSymWins + "/" + numOfTournaments); }
public void PosnIsOnTheEdge() { Board board = new Board(); List <int> edgeRow = new List <int> { 0, 5 }; List <int> edgeCol = new List <int> { 0, 5 }; List <Posn> edgePosn = new List <Posn>(); foreach (int row in edgeRow) { if (row == 0) { for (int col = 0; col < 6; col++) { edgePosn.Add(new Posn(row, col, 0)); edgePosn.Add(new Posn(row, col, 1)); } } if (row == 5) { for (int col = 0; col < 6; col++) { edgePosn.Add(new Posn(row, col, 4)); edgePosn.Add(new Posn(row, col, 5)); } } } foreach (int col in edgeCol) { if (col == 0) { for (int row = 0; row < 6; row++) { edgePosn.Add(new Posn(row, col, 6)); edgePosn.Add(new Posn(row, col, 7)); } } if (col == 5) { for (int row = 0; row < 6; row++) { edgePosn.Add(new Posn(row, col, 2)); edgePosn.Add(new Posn(row, col, 3)); } } } for (int row = -1; row <= 6; row++) { for (int col = -1; col <= 6; col++) { for (int loc = 0; loc <= 8; loc++) { Posn checkPosn = new Posn(row, col, loc); if (edgePosn.Exists(x => x.isEqual(checkPosn))) { Assert.IsTrue(board.isElimPosn(checkPosn)); } else { Assert.IsFalse(board.isElimPosn(checkPosn)); } } } } }