public void BetweenD4A1_B2C3()
        {
            // arrange
            var p = new AttackPath("D4", "A1");
            Bitboard expected = Bitboard.With.B2.C3.Build();

            // act

            // assert
            p.AsBoard.Should().Be(expected);
            p.IsValid.Should().Be(true);
        }
        public void BetweenA1A4_A2A3()
        {
            // arrange
            var p = new AttackPath("A1", "A4");
            Bitboard expected = Bitboard.With.A2.A3.Build();

            // act

            // assert
            p.AsBoard.Should().Be(expected);
            p.IsValid.Should().Be(true);
        }
        public void BetweenA1F1_B1C1D1E1()
        {
            // arrange
            var p = new AttackPath("A1", "F1");
            Bitboard expected = Bitboard.With.B1.C1.D1.E1.Build();

            // act

            // assert
            p.AsBoard.Should().Be(expected);
            p.IsValid.Should().Be(true);
        }
        public void BetweenD5A1_Empty()
        {
            // arrange
            var p = new AttackPath("D5", "A1");
            Bitboard expected = Bitboard.Empty;

            // act

            // assert
            p.AsBoard.Should().Be(expected);
            p.IsValid.Should().Be(false);
        }
        public void BetweenH1E4_G2F3()
        {
            // arrange
            var p = new AttackPath("H1", "E4");
            Bitboard expected = Bitboard.With.G2.F3.Build();

            // act

            // assert
            p.AsBoard.Should().Be(expected);
            p.IsValid.Should().Be(true);
        }