public void TryParse_NotValid(string message)
        {
            var target = new MovePromotionParser();
            var parsed = target.TryParse(message, out var result);

            Assert.IsFalse(parsed);
            Assert.IsNull(result);
        }
        public void TryParse_Valid_Captures(string message)
        {
            var target = new MovePromotionParser();
            var parsed = target.TryParse(message, out var promotion);

            Assert.IsTrue(parsed);

            Assert.AreEqual(BoardFile.FileB, promotion.FromFile);
            Assert.IsNull(promotion.FromRank);
            Assert.IsTrue(promotion.Captures);

            Assert.AreEqual(BoardFile.FileA, promotion.ToFile);
            Assert.AreEqual(BoardRank.Rank8, promotion.ToRank);

            Assert.AreEqual(Piece.Queen, promotion.PromotionToPiece);

            Assert.IsFalse(promotion.Check);
            Assert.IsFalse(promotion.Checkmate);
        }
        public void TryParse_Valid_CenterRank()
        {
            var target = new MovePromotionParser();
            var parsed = target.TryParse("c3Q", out var promotion);

            Assert.IsTrue(parsed);

            Assert.IsNull(promotion.FromFile);
            Assert.IsNull(promotion.FromRank);
            Assert.IsFalse(promotion.Captures);

            Assert.AreEqual(BoardFile.FileC, promotion.ToFile);
            Assert.AreEqual(BoardRank.Rank3, promotion.ToRank);

            Assert.AreEqual(Piece.Queen, promotion.PromotionToPiece);

            Assert.IsFalse(promotion.Check);
            Assert.IsFalse(promotion.Checkmate);
        }