yep
This commit is contained in:
@@ -17,10 +17,12 @@ namespace Shogi.Domain.UnitTests
|
||||
//[Fact]
|
||||
//public void InitializeBoardStateWithMoves()
|
||||
//{
|
||||
// var board = new ShogiBoardState();
|
||||
// var rules = new StandardRules(board);
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("A3", "A4")
|
||||
// // P1 Pawn
|
||||
// new Move("A3", "A4")
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// shogi.Board["A3"].Should().BeNull();
|
||||
@@ -33,12 +35,12 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop puts P2 in check
|
||||
// new Move("B2", "G7"),
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop puts P2 in check
|
||||
// new Move("B2", "G7"),
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// shogi.InCheck.Should().Be(WhichPlayer.Player2);
|
||||
@@ -158,12 +160,12 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop puts P2 in check
|
||||
// new Move("B2", "G7")
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop puts P2 in check
|
||||
// new Move("B2", "G7")
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// shogi.InCheck.Should().Be(WhichPlayer.Player2);
|
||||
@@ -184,26 +186,26 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("I7", "I6"),
|
||||
// // P1 Bishop takes P2 Pawn.
|
||||
// new Move("B2", "G7"),
|
||||
// // P2 Gold, block check from P1 Bishop.
|
||||
// new Move("F9", "F8"),
|
||||
// // P1 Bishop takes P2 Bishop, promotes so it can capture P2 Knight and P2 Lance
|
||||
// new Move("G7", "H8", true),
|
||||
// // P2 Pawn again
|
||||
// new Move("I6", "I5"),
|
||||
// // P1 Bishop takes P2 Knight
|
||||
// new Move("H8", "H9"),
|
||||
// // P2 Pawn again
|
||||
// new Move("I5", "I4"),
|
||||
// // P1 Bishop takes P2 Lance
|
||||
// new Move("H9", "I9"),
|
||||
// // P2 Pawn captures P1 Pawn
|
||||
// new Move("I4", "I3")
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("I7", "I6"),
|
||||
// // P1 Bishop takes P2 Pawn.
|
||||
// new Move("B2", "G7"),
|
||||
// // P2 Gold, block check from P1 Bishop.
|
||||
// new Move("F9", "F8"),
|
||||
// // P1 Bishop takes P2 Bishop, promotes so it can capture P2 Knight and P2 Lance
|
||||
// new Move("G7", "H8", true),
|
||||
// // P2 Pawn again
|
||||
// new Move("I6", "I5"),
|
||||
// // P1 Bishop takes P2 Knight
|
||||
// new Move("H8", "H9"),
|
||||
// // P2 Pawn again
|
||||
// new Move("I5", "I4"),
|
||||
// // P1 Bishop takes P2 Lance
|
||||
// new Move("H9", "I9"),
|
||||
// // P2 Pawn captures P1 Pawn
|
||||
// new Move("I4", "I3")
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// shogi.Player1Hand.Count.Should().Be(4);
|
||||
@@ -251,20 +253,20 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Pawn, arbitrary move.
|
||||
// new Move("A3", "A4"),
|
||||
// // P2 Bishop takes P1 Bishop
|
||||
// new Move("H8", "B2"),
|
||||
// // P1 Silver takes P2 Bishop
|
||||
// new Move("C1", "B2"),
|
||||
// // P2 Pawn, arbtrary move
|
||||
// new Move("A7", "A6"),
|
||||
// // P1 drop Bishop, place P2 in check
|
||||
// new Move(WhichPiece.Bishop, "G7")
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Pawn, arbitrary move.
|
||||
// new Move("A3", "A4"),
|
||||
// // P2 Bishop takes P1 Bishop
|
||||
// new Move("H8", "B2"),
|
||||
// // P1 Silver takes P2 Bishop
|
||||
// new Move("C1", "B2"),
|
||||
// // P2 Pawn, arbtrary move
|
||||
// new Move("A7", "A6"),
|
||||
// // P1 drop Bishop, place P2 in check
|
||||
// new Move(WhichPiece.Bishop, "G7")
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// shogi.InCheck.Should().Be(WhichPlayer.Player2);
|
||||
@@ -287,14 +289,14 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop capture P2 Bishop
|
||||
// new Move("B2", "H8"),
|
||||
// // P2 Pawn
|
||||
// new Move("G6", "G5")
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Bishop capture P2 Bishop
|
||||
// new Move("B2", "H8"),
|
||||
// // P2 Pawn
|
||||
// new Move("G6", "G5")
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// using (new AssertionScope())
|
||||
@@ -325,10 +327,10 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4"),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6"),
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
|
||||
@@ -345,10 +347,10 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4" ),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6" )
|
||||
// // P1 Pawn
|
||||
// new Move("C3", "C4" ),
|
||||
// // P2 Pawn
|
||||
// new Move("G7", "G6" )
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
|
||||
@@ -373,26 +375,26 @@ namespace Shogi.Domain.UnitTests
|
||||
// // Arrange
|
||||
// var moves = new[]
|
||||
// {
|
||||
// // P1 Rook
|
||||
// new Move("H2", "E2"),
|
||||
// // P2 Gold
|
||||
// new Move("F9", "G8"),
|
||||
// // P1 Pawn
|
||||
// new Move("E3", "E4"),
|
||||
// // P2 other Gold
|
||||
// new Move("D9", "C8"),
|
||||
// // P1 same Pawn
|
||||
// new Move("E4", "E5"),
|
||||
// // P2 Pawn
|
||||
// new Move("E7", "E6"),
|
||||
// // P1 Pawn takes P2 Pawn
|
||||
// new Move("E5", "E6"),
|
||||
// // P2 King
|
||||
// new Move("E9", "E8"),
|
||||
// // P1 Pawn promotes, threatens P2 King
|
||||
// new Move("E6", "E7", true),
|
||||
// // P2 King retreat
|
||||
// new Move("E8", "E9"),
|
||||
// // P1 Rook
|
||||
// new Move("H2", "E2"),
|
||||
// // P2 Gold
|
||||
// new Move("F9", "G8"),
|
||||
// // P1 Pawn
|
||||
// new Move("E3", "E4"),
|
||||
// // P2 other Gold
|
||||
// new Move("D9", "C8"),
|
||||
// // P1 same Pawn
|
||||
// new Move("E4", "E5"),
|
||||
// // P2 Pawn
|
||||
// new Move("E7", "E6"),
|
||||
// // P1 Pawn takes P2 Pawn
|
||||
// new Move("E5", "E6"),
|
||||
// // P2 King
|
||||
// new Move("E9", "E8"),
|
||||
// // P1 Pawn promotes, threatens P2 King
|
||||
// new Move("E6", "E7", true),
|
||||
// // P2 King retreat
|
||||
// new Move("E8", "E9"),
|
||||
// };
|
||||
// var shogi = new Shogi(moves);
|
||||
// output.WriteLine(shogi.PrintStateAsAscii());
|
||||
|
||||
31
Shogi.Domain.UnitTests/StandardRulesShould.cs
Normal file
31
Shogi.Domain.UnitTests/StandardRulesShould.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using FluentAssertions;
|
||||
using FluentAssertions.Execution;
|
||||
using Xunit;
|
||||
|
||||
namespace Shogi.Domain.UnitTests
|
||||
{
|
||||
public class StandardRulesShould
|
||||
{
|
||||
[Fact]
|
||||
public void AllowValidMoves_AfterCheck()
|
||||
{
|
||||
// Arrange
|
||||
var board = new ShogiBoardState();
|
||||
var rules = new StandardRules(board);
|
||||
rules.Move("C3", "C4"); // P1 Pawn
|
||||
rules.Move("G7", "G6"); // P2 Pawn
|
||||
rules.Move("B2", "G7"); // P1 Bishop puts P2 in check
|
||||
board.InCheck.Should().Be(WhichPlayer.Player2);
|
||||
|
||||
// Act - P2 is able to un-check theirself.
|
||||
/// P2 King moves out of check
|
||||
var moveSuccess = rules.Move("E9", "E8");
|
||||
|
||||
// Assert
|
||||
using var _ = new AssertionScope();
|
||||
moveSuccess.Success.Should().BeTrue();
|
||||
moveSuccess.Reason.Should().BeEmpty();
|
||||
board.InCheck.Should().BeNull();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user