cleanroom implementation of a chess engine. doesn't work :)

finish starting board and add tests for material

+20 -12
+20 -12
src/lib.rs
··· 43 43 .collect::<Vec<_>>(); 44 44 let black_pawns = white_pawns 45 45 .iter() 46 - .map(|&lp| LocatedPiece { rank: 7, ..lp }) 46 + .map(|&lp| LocatedPiece { rank: 6, ..lp }) 47 47 .collect::<Vec<_>>(); 48 48 49 49 let white_pieces = vec![ ··· 56 56 Piece::Knight, 57 57 Piece::Rook, 58 58 ] 59 - .iter() 59 + .into_iter() 60 60 .enumerate() 61 - .map(|(piece, idx)| LocatedPiece { 61 + .map(|(idx, piece)| LocatedPiece { 62 62 piece, 63 63 rank: 0, 64 64 file: idx, 65 65 }); 66 66 67 + let black_pieces = white_pieces 68 + .clone() 69 + .rev() 70 + .map(|lp| LocatedPiece { rank: 7, ..lp }); 71 + 67 72 Self { 68 - white: white_pawns, 69 - black: black_pawns, 73 + white: white_pieces.chain(white_pawns).collect(), 74 + black: black_pieces.chain(black_pawns).collect(), 70 75 } 71 76 } 72 77 fn material(&self) -> i32 { ··· 84 89 } 85 90 } 86 91 87 - pub fn add(left: u64, right: u64) -> u64 { 88 - left + right 89 - } 90 - 91 92 #[cfg(test)] 92 93 mod tests { 93 94 use super::*; 94 95 95 96 #[test] 96 - fn it_works() { 97 - let result = add(2, 2); 98 - assert_eq!(result, 4); 97 + fn new_board_zero_material() { 98 + let board = Board::new(); 99 + assert_eq!(board.material(), 0) 100 + } 101 + 102 + #[test] 103 + fn white_pieces_material_correct() { 104 + let mut board = Board::new(); 105 + board.black = vec![]; 106 + assert_eq!(board.material(), 8 + 5 * 2 + 3 * 4 + 9) 99 107 } 100 108 }