private IEnumerable <uint> GetNextMove(MoveGenerator moveGenerator, ushort ply, Board board, Colour colour, uint previousBestMove) { if (previousBestMove > 0) { yield return(previousBestMove); } foreach (var move in moveGenerator.GenerateStream(ply, board, colour)) { if (move == previousBestMove) { continue; } yield return(move); } }
public void GenerateSameAsYield() { var gameState = FenHelpers.Parse("k7/2Q5/8/4p3/3K1P2/2q5/8/8 w - - 0 1"); var board = CreateBoard(gameState); var moves1 = new List <uint>(64); MoveGenerator.Generate(0, board, Colour.White, moves1); var moves2 = new List <uint>(64); foreach (var move in MoveGenerator.GenerateStream(0, board, Colour.White)) { moves2.Add(move); } var moveViews1 = moves1.Select(x => new MoveViewer(x)); var moveViews2 = moves2.Select(x => new MoveViewer(x)); Assert.Equal(moves1.Count, moves2.Count); }