public void ValidPath_should_return_truncated_path_when_move_test_fails()
        {
            var validator = new ChessPathValidator(_providerMock.Object);
            var path      = new ChessPathBuilder().From("D2").To("D3").To("D4")
                            .To("D5", (int)DefaultActions.TakeOnly)
                            .Build();

            IEnumerable <BoardMovePredicate <ChessPieceEntity> > failOnD5 = new List <BoardMovePredicate <ChessPieceEntity> >
            {
                (move, state) => !move.To.Equals("D5".ToBoardLocation())
            };

            _providerMock.Setup(f => f.TryGetValue(
                                    It.IsAny <int>(),
                                    out failOnD5))
            .Returns(true);

            var validPath = validator.ValidatePath(BoardStateMock.Object, path);

            PathsShouldContain(new List <Path> {
                validPath
            },
                               new ChessPathBuilder().From("D2")
                               .To("D3")
                               .To("D4")
                               .Build(), Colours.White);
        }
        public void ValidPath_should_return_validPath()
        {
            var validator = new ChessPathValidator(_providerMock.Object);
            var path      = new ChessPathBuilder().Build();

            validator.ValidatePath(BoardStateMock.Object, path);

            path.Any().ShouldBeTrue();
        }
        public void ValidPath_should_throw_for_unsupported_MoveType()
        {
            _providerMock.Setup(f => f.TryGetValue(It.IsAny <int>(), out _moveTests))
            .Returns(false);

            var validator = new ChessPathValidator(_providerMock.Object);
            var path      = new ChessPathBuilder().Build();

            Should.Throw <Exception>(() => validator.ValidatePath(BoardStateMock.Object, path));
        }