* wchess: whisper assisted chess * wchess: fix allowed moves in check * wchess: touchstart, touchend events * wchess: css, disabled button * wchess : html touches * wchess : minor fixes and code style * wchess : bump encoder context to 1280 * wchess : index.html * wchess : fix CI warnings * wchess : add array header * wchess : build static library * wchess : display grammar * wchess : update UX * wchess : add comment * wchess : add README --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
117 lines
4.3 KiB
C++
117 lines
4.3 KiB
C++
#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") == "");
|
|
}
|
|
} |