1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// use checkmate::chess::*;
// use checkmate::errors::*;
// #[test]
// fn castling_rights_from_fen() {
// let mut chess = Chess::new();
// chess.load_fen("r3k2r/8/8/8/8/8/8/R3K2R w - - 0 1".to_string());
// assert_eq!((false, false), chess.get_castling_rights());
// }
// #[test]
// fn castling_rights_after_king_moves() {
// let mut chess = Chess::new();
// chess.load_fen("r3k2r/8/8/8/8/8/8/R3K2R w QqkK - 0 1".to_string());
// chess.move_piece("Ke2");
// assert_eq!(
// (false, false, true, true),
// chess.get_castling_rights_tests()
// );
// chess.move_piece("Kf7");
// assert_eq!(
// (false, false, false, false),
// chess.get_castling_rights_tests()
// );
// }
// #[test]
// fn castling_rights_after_rook_moves() {
// let mut chess = Chess::new();
// chess.load_fen("r3k2r/8/8/8/8/8/8/R3K2R w QqkK - 0 1".to_string());
// chess.move_piece("Rh2");
// assert_eq!((false, true, true, true), chess.get_castling_rights_tests());
// chess.move_piece("Rh2");
// assert_eq!(
// (false, true, false, true),
// chess.get_castling_rights_tests()
// );
// chess.move_piece("Rb1");
// assert_eq!(
// (false, false, false, true),
// chess.get_castling_rights_tests()
// );
// chess.move_piece("Rb8");
// assert_eq!(
// (false, false, false, false),
// chess.get_castling_rights_tests()
// );
// }
// #[test]
// fn cannot_castle_if_checked() {
// let mut chess = Chess::new();
// let fen = "r3k2r/8/1b6/6q1/8/1B5B/8/R3K2R w KQkq - 0 1".to_string();
// chess.load_fen(fen.clone());
// assert_eq!(
// chess.move_piece("O-O"),
// Err(MoveError::IllegalKingSideCastle)
// );
// assert_eq!(
// chess.move_piece("O-O-O"),
// Err(MoveError::IllegalQueenSideCastle)
// );
// assert_eq!(chess.get_fen(), fen);
// chess.set_turn(BLACK);
// assert_eq!(
// chess.move_piece("O-O"),
// Err(MoveError::IllegalKingSideCastle)
// );
// assert_eq!(
// chess.move_piece("O-O-O"),
// Err(MoveError::IllegalQueenSideCastle)
// );
// chess.set_turn(WHITE);
// assert_eq!(chess.get_fen(), fen);
// }