diff options
Diffstat (limited to 'src/testsan.c')
| -rw-r--r-- | src/testsan.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/testsan.c b/src/testsan.c new file mode 100644 index 0000000..37010be --- /dev/null +++ b/src/testsan.c @@ -0,0 +1,97 @@ +/** + +Copyright (c) Scott Gasch + +Module Name: + + testsan.c + +Abstract: + + Tests the SAN-style (Nbd5) move parser. + +Author: + + Scott Gasch ([email protected]) 13 May 2004 + +Revision History: + + $Id: testsan.c 345 2007-12-02 22:56:42Z scott $ + +**/ + +#ifdef TEST +#include "chess.h" + +void +TestSan(void) +/** + +Routine description: + + Tests the SAN-style (Nbd5) move parser. + +Parameters: + + void + +Return value: + + void + +**/ +{ + typedef struct _TEST_SAN_MOVE + { + CHAR *szSAN; + MOVE mv; + } + TEST_SAN_MOVE; + TEST_SAN_MOVE x[] = + { + { "b8=Q", { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } }, + { "b8Q", { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } }, + { "o-o", { MAKE_MOVE(0,0,0,0,0,0) } }, + { "0-0", { MAKE_MOVE(0,0,0,0,0,0) } }, + { "o-o-o", { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "0-0-0", { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "Bxc4", { MAKE_MOVE(A2, C4, WHITE_BISHOP, BLACK_PAWN, 0, 0) } }, + { "Bec4", { MAKE_MOVE(0,0,0,0,0,0) } }, + { "h3", { MAKE_MOVE(H2, H3, WHITE_PAWN, 0, 0, 0) } }, + { "h4", { MAKE_MOVE(H2, H4, WHITE_PAWN, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "N2xc4", { MAKE_MOVE(B2, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } }, + { "Nb6c4", { MAKE_MOVE(B6, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } }, + { "Nxd7", { MAKE_MOVE(B6, D7, WHITE_KNIGHT, BLACK_BISHOP, 0, 0) } }, + { "hxg3", { MAKE_MOVE(H2, G3, WHITE_PAWN, BLACK_KNIGHT, 0, 0) } }, + { "Qxd7++",{ MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } }, + { "Qxd7#" ,{ MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } }, + { "f6", { MAKE_MOVE(F5, F6, WHITE_PAWN, 0, 0, 0) } }, + { "bxa8=N",{ MAKE_MOVE(B7, A8, WHITE_PAWN, BLACK_ROOK, WHITE_KNIGHT, MOVE_FLAG_SPECIAL) } }, + }; + POSITION pos; + ULONG u; + MOVE mvSAN; + + Trace("Testing SAN parser code...\n"); + for (u = 0; + u < ARRAY_LENGTH(x); + u++) + { + if (FALSE == FenToPosition(&pos, + "r2kr3/pP1b2nb/1N6/5P2/2p5/6n1/BN1QBP1P/R3K2R w KQ - 0 1")) + { + UtilPanic(INCONSISTENT_STATE, + NULL, NULL, NULL, NULL, + __FILE__, __LINE__); + } + + mvSAN = ParseMoveSan(x[u].szSAN, &pos); + if (mvSAN.uMove != x[u].mv.uMove) + { + UtilPanic(TESTCASE_FAILURE, + NULL, "ParseMoveSan", NULL, NULL, + __FILE__, __LINE__); + } + } +} +#endif |
