tangled
alpha
login
or
join now
nove.dev
/
outsider
0
fork
atom
cleanroom implementation of a chess engine. doesn't work :)
0
fork
atom
overview
issues
pulls
pipelines
finish starting board and add tests for material
nove.dev
8 months ago
9445782b
f37bfd90
+20
-12
1 changed file
expand all
collapse all
unified
split
src
lib.rs
+20
-12
src/lib.rs
···
43
43
.collect::<Vec<_>>();
44
44
let black_pawns = white_pawns
45
45
.iter()
46
46
-
.map(|&lp| LocatedPiece { rank: 7, ..lp })
46
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
59
-
.iter()
59
59
+
.into_iter()
60
60
.enumerate()
61
61
-
.map(|(piece, idx)| LocatedPiece {
61
61
+
.map(|(idx, piece)| LocatedPiece {
62
62
piece,
63
63
rank: 0,
64
64
file: idx,
65
65
});
66
66
67
67
+
let black_pieces = white_pieces
68
68
+
.clone()
69
69
+
.rev()
70
70
+
.map(|lp| LocatedPiece { rank: 7, ..lp });
71
71
+
67
72
Self {
68
68
-
white: white_pawns,
69
69
-
black: black_pawns,
73
73
+
white: white_pieces.chain(white_pawns).collect(),
74
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
87
-
pub fn add(left: u64, right: u64) -> u64 {
88
88
-
left + right
89
89
-
}
90
90
-
91
92
#[cfg(test)]
92
93
mod tests {
93
94
use super::*;
94
95
95
96
#[test]
96
96
-
fn it_works() {
97
97
-
let result = add(2, 2);
98
98
-
assert_eq!(result, 4);
97
97
+
fn new_board_zero_material() {
98
98
+
let board = Board::new();
99
99
+
assert_eq!(board.material(), 0)
100
100
+
}
101
101
+
102
102
+
#[test]
103
103
+
fn white_pieces_material_correct() {
104
104
+
let mut board = Board::new();
105
105
+
board.black = vec![];
106
106
+
assert_eq!(board.material(), 8 + 5 * 2 + 3 * 4 + 9)
99
107
}
100
108
}