private static void TestMove(Board board, LiteralMove lmove, bool makeMove = false) { var newMove = board.NormalizeMove(lmove); Assert.NotNull(newMove); Assert.True(newMove.Validate()); // 移動元の情報は使わない var move1 = board.ConvertMoveFromLiteral(newMove, false); Assert.NotNull(move1); Assert.True(move1.Validate()); Assert.True(board.CanMove(move1)); // 移動元の情報を使う var move2 = board.ConvertMoveFromLiteral(newMove, true); Assert.NotNull(move2); Assert.True(move2.Validate()); Assert.True(board.CanMove(move2)); if (makeMove) { Assert.True(board.DoMove(move1)); } }
public void ResignTest() { var resign = new LiteralMove { SpecialMoveType = SpecialMoveType.Resign, }; Assert.AreEqual( ShogiParserEx.ParseMove("まけました", true), resign); Assert.AreEqual( ShogiParserEx.ParseMove("あ、まけました", true), resign); Assert.AreNotEqual( ShogiParserEx.ParseMove("あ 負けました", true), resign); }
public void SpecialMove_NormalizeTest() { var board = new Board(); var resign = new LiteralMove { SpecialMoveType = SpecialMoveType.Resign }; var move = board.NormalizeMove(resign); Assert.NotNull(move); Assert.True(move.Validate()); Assert.True(move.IsSpecialMove); Assert.True(move.SpecialMoveType == SpecialMoveType.Resign); var invalid = new LiteralMove(); Assert.Catch(() => board.NormalizeMove(invalid)); }
private static void TestInvalidMove(Board board, LiteralMove move) { Assert.Null(board.NormalizeMove(move)); }
public void ParseMoveTest() { Assert.AreEqual( ShogiParserEx.ParseMove("同格", true), new LiteralMove { SameAsOld = true, Piece = Piece.Kaku, }); var gin68 = new LiteralMove { DstSquare = new Square(6, 8), Piece = Piece.Gin, }; Assert.AreEqual( ShogiParserEx.ParseMove("ろっぱち銀", true), gin68); Assert.AreEqual( ShogiParserEx.ParseMove("ロッパチ銀", true), gin68); Assert.AreEqual( ShogiParserEx.ParseMove("46歩", true), new LiteralMove { DstSquare = new Square(4, 6), Piece = Piece.Hu, }); Assert.AreEqual( ShogiParserEx.ParseMove("56ふぅ", true), new LiteralMove { DstSquare = new Square(5, 6), Piece = Piece.Hu, }); Assert.AreEqual( ShogiParserEx.ParseMove("救急玉", true), new LiteralMove { DstSquare = new Square(9, 9), Piece = Piece.Gyoku, }); Assert.AreEqual( ShogiParserEx.ParseMove("燦燦劉", true), new LiteralMove { DstSquare = new Square(3, 3), Piece = Piece.Ryu, }); Assert.AreEqual( ShogiParserEx.ParseMove("32RYUU", true), new LiteralMove { DstSquare = new Square(3, 2), Piece = Piece.Ryu, }); Assert.AreEqual( ShogiParserEx.ParseMove("32KINN", true), new LiteralMove { DstSquare = new Square(3, 2), Piece = Piece.Kin, }); }