Skip to content

Commit

Permalink
Test: Started move tests for each bug type, #23
Browse files Browse the repository at this point in the history
  • Loading branch information
jonthysell committed Oct 14, 2019
1 parent 79e3261 commit 4bd1001
Show file tree
Hide file tree
Showing 11 changed files with 132 additions and 3 deletions.
93 changes: 91 additions & 2 deletions Mzinga.Test/GameBoardTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,57 @@ public void GameBoard_CanCommitSuicideTest()
}

[TestMethod]
public void GameBoard_InvalidMovesTest()
public void GameBoard_ValidMovesForQueenBeeTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardInvalidMoveTestCase>("GameBoard_InvalidMovesTest.csv");
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForQueenBeeTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForSpiderTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForSpiderTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForBeetleTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForBeetleTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForGrasshopperTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForGrasshopperTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForSoldierAntTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForSoldierAntTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForMosquitoTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForMosquitoTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForLadybugTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForLadybugTest.csv");
}

[TestMethod]
public void GameBoard_ValidMovesForPillbugTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardValidMoveTestCase>("GameBoard_ValidMovesForPillbugTest.csv");
}

[TestMethod]
public void GameBoard_InvalidMovesByRuleTest()
{
TestUtils.LoadAndExecuteTestCases<GameBoardInvalidMoveTestCase>("GameBoard_InvalidMovesByRuleTest.csv");
}

[TestMethod]
Expand Down Expand Up @@ -191,6 +239,47 @@ private static Direction[] StraightLine(Direction direction, int length)
return line;
}

private class GameBoardValidMoveTestCase : ITestCase
{
public GameBoard Board;

public string[] ValidMoveStrings;
public Move[] ValidMoves;

public void Execute()
{
Trace.TraceInformation($"Current Board: {Board.ToGameString()}");
for (int i = 0; i < ValidMoveStrings.Length; i++)
{
Trace.TraceInformation($"Playing: {ValidMoveStrings[i]}");
Board.Play(ValidMoves[i]);
Board.UndoLastMove();
}
}

public void Parse(string s)
{
if (string.IsNullOrWhiteSpace(s))
{
throw new ArgumentNullException(nameof(s));
}

s = s.Trim();

string[] vals = s.Split('\t');

Board = GameBoard.ParseGameString(vals[0]);

ValidMoveStrings = vals[1].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
ValidMoves = new Move[ValidMoveStrings.Length];

for (int i = 0; i < ValidMoveStrings.Length; i++)
{
ValidMoves[i] = NotationUtils.ParseMoveString(Board, ValidMoveStrings[i]);
}
}
}

private class GameBoardInvalidMoveTestCase : ITestCase
{
public GameBoard Board;
Expand Down
26 changes: 25 additions & 1 deletion Mzinga.Test/Mzinga.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,31 @@
<None Include="TestCases\GameAITests\GameAI_WinningMoveIsBestMoveTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_InvalidMovesTest.csv">
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForGrasshopperTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForPillbugTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForSoldierAntTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForMosquitoTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForLadybugTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForBeetleTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForSpiderTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_ValidMovesForQueenBeeTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="TestCases\GameBoardTests\GameBoard_InvalidMovesByRuleTest.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base;InProgress;White[2];wS1;bS1 wS1- wB1 \wS1;wB1 /wS1;wB1 -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base;InProgress;White[2];wS1;bS1 wS1- wG1 \wS1;wG1 /wS1;wG1 -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base+L;InProgress;White[2];wS1;bS1 wS1- wL \wS1;wL /wS1;wL -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base+M;InProgress;White[2];wS1;bS1 wS1- wM \wS1;wM /wS1;wM -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base+P;InProgress;White[2];wS1;bS1 wS1- wP \wS1;wP /wS1;wP -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base;InProgress;White[2];wS1;bS1 wS1- wQ \wS1;wQ /wS1;wQ -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base;InProgress;White[2];wS1;bS1 wS1- wA1 \wS1;wA1 /wS1;wA1 -wS1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Valid Placements
Base;InProgress;White[2];wS1;bS1 wS1- wS2 \wS1;wS2 /wS1;wS2 -wS1

0 comments on commit 4bd1001

Please sign in to comment.