Example #1
0
        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));
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
 private static void TestInvalidMove(Board board, LiteralMove move)
 {
     Assert.Null(board.NormalizeMove(move));
 }
Example #5
0
        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,
            });
        }