|
|
#include "Chessboard.h" |
|
|
|
|
|
#define ASSERT(x) \ |
|
|
do { \ |
|
|
if (!(x)) { \ |
|
|
fprintf(stderr, "ASSERT: %s:%d: %s\n", __FILE__, __LINE__, #x); \ |
|
|
fflush(stderr); \ |
|
|
exit(1); \ |
|
|
} \ |
|
|
} while (0) |
|
|
|
|
|
|
|
|
int main() { |
|
|
{ |
|
|
Chessboard chess; |
|
|
|
|
|
ASSERT(chess.process("pawn to d4") == "d2-d4"); |
|
|
ASSERT(chess.process("e5") == "e7-e5"); |
|
|
ASSERT(chess.process("c1 h6") == "c1-h6"); |
|
|
ASSERT(chess.process("queen h4") == "d8-h4"); |
|
|
ASSERT(chess.process("bishop to g5") == "h6-g5"); |
|
|
ASSERT(chess.process("bishop to b4") == "f8-b4"); |
|
|
ASSERT(chess.process("c4") == ""); |
|
|
ASSERT(chess.process("knight c3") == "b1-c3"); |
|
|
ASSERT(chess.process("knight c6") == "b8-c6"); |
|
|
ASSERT(chess.process("f3") == ""); |
|
|
} |
|
|
|
|
|
{ |
|
|
Chessboard chess; |
|
|
|
|
|
ASSERT(chess.process("d4") == "d2-d4"); |
|
|
ASSERT(chess.process("e5") == "e7-e5"); |
|
|
ASSERT(chess.process("e4") == "e2-e4"); |
|
|
ASSERT(chess.process("queen h4") == "d8-h4"); |
|
|
ASSERT(chess.process("queen h5") == "d1-h5"); |
|
|
ASSERT(chess.process("f5") == ""); |
|
|
ASSERT(chess.process("g6") == "g7-g6"); |
|
|
ASSERT(chess.process("knight e2") == "g1-e2"); |
|
|
ASSERT(chess.process("f5") == "f7-f5"); |
|
|
ASSERT(chess.process("knight g3") == "e2-g3"); |
|
|
ASSERT(chess.process("g5") == ""); |
|
|
ASSERT(chess.process("king e7") == "e8-e7"); |
|
|
ASSERT(chess.process("f4") == "f2-f4"); |
|
|
ASSERT(chess.process("g5") == "g6-g5"); |
|
|
} |
|
|
|
|
|
{ |
|
|
Chessboard chess; |
|
|
|
|
|
ASSERT(chess.process("e4") == "e2-e4"); |
|
|
ASSERT(chess.process("c5") == "c7-c5"); |
|
|
ASSERT(chess.process("e5") == "e4-e5"); |
|
|
ASSERT(chess.process("c4") == "c5-c4"); |
|
|
ASSERT(chess.process("e6") == "e5-e6"); |
|
|
ASSERT(chess.process("c3") == "c4-c3"); |
|
|
ASSERT(chess.process("e7") == ""); |
|
|
ASSERT(chess.process("f7") == "e6-f7"); |
|
|
ASSERT(chess.process("d2") == ""); |
|
|
ASSERT(chess.process("king to f7") == "e8-f7"); |
|
|
ASSERT(chess.process("f4") == "f2-f4"); |
|
|
ASSERT(chess.process("d2") == "c3-d2"); |
|
|
ASSERT(chess.process("f5") == ""); |
|
|
ASSERT(chess.process("king to e2") == "e1-e2"); |
|
|
ASSERT(chess.process("king to g6") == "f7-g6"); |
|
|
ASSERT(chess.process("f5") == "f4-f5"); |
|
|
ASSERT(chess.process("e6") == ""); |
|
|
ASSERT(chess.process("king to h5") == "g6-h5"); |
|
|
ASSERT(chess.process("g4") == "g2-g4"); |
|
|
ASSERT(chess.process("king to g5") == "h5-g5"); |
|
|
ASSERT(chess.process("h4") == "h2-h4"); |
|
|
ASSERT(chess.process("king to h5") == ""); |
|
|
ASSERT(chess.process("king to g6") == ""); |
|
|
ASSERT(chess.process("king to h6") == "g5-h6"); |
|
|
ASSERT(chess.process("bishop to d2") == "c1-d2"); |
|
|
ASSERT(chess.process("king to g5") == ""); |
|
|
ASSERT(chess.process("g5") == "g7-g5"); |
|
|
} |
|
|
|
|
|
{ |
|
|
Chessboard chess; |
|
|
ASSERT(chess.process("f4") == "f2-f4"); |
|
|
ASSERT(chess.process("e5") == "e7-e5"); |
|
|
ASSERT(chess.process("g4") == "g2-g4"); |
|
|
ASSERT(chess.process("queen to h4") == "d8-h4#"); |
|
|
ASSERT(chess.process("knight f3") == ""); |
|
|
ASSERT(chess.grammar().empty()); |
|
|
} |
|
|
|
|
|
{ |
|
|
Chessboard chess; |
|
|
ASSERT(chess.process("f4") == "f2-f4"); |
|
|
ASSERT(chess.process("e5") == "e7-e5"); |
|
|
ASSERT(chess.process("g4") == "g2-g4"); |
|
|
ASSERT(chess.process("d5") == "d7-d5"); |
|
|
ASSERT(chess.process("g1 f3") == "g1-f3"); |
|
|
ASSERT(chess.process("queen to h4") == "d8-h4"); |
|
|
ASSERT(!chess.grammar().empty()); |
|
|
} |
|
|
|
|
|
{ |
|
|
Chessboard chess; |
|
|
ASSERT(chess.process("knight c3") == "b1-c3"); |
|
|
ASSERT(chess.process("knight c6") == "b8-c6"); |
|
|
ASSERT(chess.process("knight b5") == "c3-b5"); |
|
|
ASSERT(chess.process("knight f6") == "g8-f6"); |
|
|
ASSERT(chess.process("knight d6") == "b5-d6"); |
|
|
ASSERT(chess.process("knight d4") == ""); |
|
|
ASSERT(chess.process("d6") == "c7-d6"); |
|
|
ASSERT(chess.process("e4") == "e2-e4"); |
|
|
ASSERT(chess.process("knight d4") == "c6-d4"); |
|
|
ASSERT(chess.process("d3") == "d2-d3"); |
|
|
ASSERT(chess.process("knight e4") == "f6-e4"); |
|
|
ASSERT(chess.process("king to e2") == ""); |
|
|
ASSERT(chess.process("king to d2") == ""); |
|
|
} |
|
|
} |