1
1
#include < catch2/catch_test_macros.hpp>
2
- #include " CLI.h"
2
+
3
+ #include " ChessBoard.h"
4
+ #include " MoveParser.h"
3
5
4
6
TEST_CASE (" Repetitions - by White" , " [RepetitionTests]" ) {
5
7
ChessBoard board = ChessBoard ();
6
8
board.setPosition (" 2r2rk1/1q1b1pp1/2nppn1p/3p4/N2P1N1P/4PB2/1P1Q1PP1/2R1R1K1 b - - 6 23" );
7
9
CHECK (!board.isDraw ());
8
- board.makeMove (Interface::CLI:: parseMove (" f6e4" , board));
10
+ board.makeMove (parseMove (" f6e4" , board));
9
11
CHECK (!board.isDraw ());
10
- board.makeMove (Interface::CLI:: parseMove (" d2d1" , board));
12
+ board.makeMove (parseMove (" d2d1" , board));
11
13
CHECK (!board.isDraw ());
12
- board.makeMove (Interface::CLI:: parseMove (" e4f6" , board));
14
+ board.makeMove (parseMove (" e4f6" , board));
13
15
CHECK (!board.isDraw ());
14
- board.makeMove (Interface::CLI:: parseMove (" d1d2" , board));
16
+ board.makeMove (parseMove (" d1d2" , board));
15
17
CHECK (board.isDraw ());
16
18
}
17
19
18
20
TEST_CASE (" Repetitions - by Black" , " [RepetitionTests]" ) {
19
21
ChessBoard board = ChessBoard ();
20
22
board.setPosition (" 2r2rk1/1q1b1pp1/2nppn1p/3p4/N2P1N1P/4PB2/1P3PP1/2RQR1K1 w - - 5 23" );
21
23
CHECK (!board.isDraw ());
22
- board.makeMove (Interface::CLI:: parseMove (" d1d2" , board));
24
+ board.makeMove (parseMove (" d1d2" , board));
23
25
CHECK (!board.isDraw ());
24
- board.makeMove (Interface::CLI:: parseMove (" f6e4" , board));
26
+ board.makeMove (parseMove (" f6e4" , board));
25
27
CHECK (!board.isDraw ());
26
- board.makeMove (Interface::CLI:: parseMove (" d2d1" , board));
28
+ board.makeMove (parseMove (" d2d1" , board));
27
29
CHECK (!board.isDraw ());
28
- board.makeMove (Interface::CLI:: parseMove (" e4f6" , board));
30
+ board.makeMove (parseMove (" e4f6" , board));
29
31
CHECK (board.isDraw ());
30
32
}
31
33
32
34
TEST_CASE (" Repetitions - No repetition by White" , " [RepetitionTests]" ) {
33
35
ChessBoard board = ChessBoard ();
34
36
board.setPosition (" 2r2rk1/1q1b1pp1/2nppn1p/3p4/N2P1N1P/4PB2/1P1Q1PP1/2R1R1K1 b - - 6 23" );
35
37
CHECK (!board.isDraw ());
36
- board.makeMove (Interface::CLI:: parseMove (" f6e4" , board));
38
+ board.makeMove (parseMove (" f6e4" , board));
37
39
CHECK (!board.isDraw ());
38
- board.makeMove (Interface::CLI:: parseMove (" d2d1" , board));
40
+ board.makeMove (parseMove (" d2d1" , board));
39
41
CHECK (!board.isDraw ());
40
- board.makeMove (Interface::CLI:: parseMove (" e4f6" , board));
42
+ board.makeMove (parseMove (" e4f6" , board));
41
43
CHECK (!board.isDraw ());
42
- board.makeMove (Interface::CLI:: parseMove (" a4b6" , board));
44
+ board.makeMove (parseMove (" a4b6" , board));
43
45
CHECK (!board.isDraw ());
44
46
}
45
47
46
48
TEST_CASE (" Repetitions - No repetition by Black" , " [RepetitionTests]" ) {
47
49
ChessBoard board = ChessBoard ();
48
50
board.setPosition (" 2r2rk1/1q1b1pp1/2nppn1p/3p4/N2P1N1P/4PB2/1P3PP1/2RQR1K1 w - - 5 23" );
49
51
CHECK (!board.isDraw ());
50
- board.makeMove (Interface::CLI:: parseMove (" d1d2" , board));
52
+ board.makeMove (parseMove (" d1d2" , board));
51
53
CHECK (!board.isDraw ());
52
- board.makeMove (Interface::CLI:: parseMove (" f6e4" , board));
54
+ board.makeMove (parseMove (" f6e4" , board));
53
55
CHECK (!board.isDraw ());
54
- board.makeMove (Interface::CLI:: parseMove (" d2d1" , board));
56
+ board.makeMove (parseMove (" d2d1" , board));
55
57
CHECK (!board.isDraw ());
56
- board.makeMove (Interface::CLI:: parseMove (" c6a5" , board));
58
+ board.makeMove (parseMove (" c6a5" , board));
57
59
CHECK (!board.isDraw ());
58
60
}
59
61
60
62
TEST_CASE (" Repetitions - after irreversible move" , " [RepetitionTests]" ) {
61
63
ChessBoard board = ChessBoard ();
62
64
board.setPosition (" 2r2rk1/1q1b1pp1/2nppn1p/3p4/N2P1N1P/4PB2/1P3PP1/2RQR1K1 w - - 5 23" );
63
65
CHECK (!board.isDraw ());
64
- board.makeMove (Interface::CLI:: parseMove (" h4h5" , board));
66
+ board.makeMove (parseMove (" h4h5" , board));
65
67
CHECK (!board.isDraw ());
66
- board.makeMove (Interface::CLI:: parseMove (" f6e4" , board));
68
+ board.makeMove (parseMove (" f6e4" , board));
67
69
CHECK (!board.isDraw ());
68
- board.makeMove (Interface::CLI:: parseMove (" d1d2" , board));
70
+ board.makeMove (parseMove (" d1d2" , board));
69
71
CHECK (!board.isDraw ());
70
- board.makeMove (Interface::CLI:: parseMove (" e4f6" , board));
72
+ board.makeMove (parseMove (" e4f6" , board));
71
73
CHECK (!board.isDraw ());
72
- board.makeMove (Interface::CLI:: parseMove (" d2d1" , board));
74
+ board.makeMove (parseMove (" d2d1" , board));
73
75
CHECK (board.isDraw ());
74
76
}
75
77
@@ -80,17 +82,17 @@ TEST_CASE("Repetitions - Irreversible Moves", "[RepetitionTests]") {
80
82
CHECK (board.irreversibleIndices .empty ());
81
83
CHECK (board.positionHistory .empty ());
82
84
// PAWN move
83
- board.makeMove (Interface::CLI:: parseMove (" b2b4" , board));
85
+ board.makeMove (parseMove (" b2b4" , board));
84
86
CHECK (board.positionHistory .size () == 1 );
85
87
CHECK (board.irreversibleIndices .size () == 1 );
86
88
CHECK (board.irreversibleIndices [0 ] == 0 );
87
89
// CAPTURE
88
- board.makeMove (Interface::CLI:: parseMove (" c6b4" , board));
90
+ board.makeMove (parseMove (" c6b4" , board));
89
91
CHECK (board.positionHistory .size () == 2 );
90
92
CHECK (board.irreversibleIndices .size () == 2 );
91
93
CHECK (board.irreversibleIndices [1 ] == 1 );
92
94
// QUIET MOVE
93
- board.makeMove (Interface::CLI:: parseMove (" a4c3" , board));
95
+ board.makeMove (parseMove (" a4c3" , board));
94
96
CHECK (board.positionHistory .size () == 3 );
95
97
CHECK (board.irreversibleIndices .size () == 2 );
96
98
board.unMakeMove ();
0 commit comments