diff options
| author | Scott Gasch <[email protected]> | 2016-06-01 18:58:58 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2016-06-01 18:58:58 -0700 |
| commit | 3fd43cd5fcb22bb65bf2a92a25d95d801b11c9e0 (patch) | |
| tree | 9b6443235d16ba17f094a1a1c7ae53d2bcb9267b /src/testics.c | |
Initial checkin for typhoon chess engine.
Diffstat (limited to 'src/testics.c')
| -rwxr-xr-x | src/testics.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/testics.c b/src/testics.c new file mode 100755 index 0000000..b82450b --- /dev/null +++ b/src/testics.c @@ -0,0 +1,94 @@ +/** + +Copyright (c) Scott Gasch + +Module Name: + + testics.c + +Abstract: + + Test the ICS-style (d2d4) move parser. + +Author: + + Scott Gasch ([email protected]) 17 May 2004 + +Revision History: + + $Id: testics.c 345 2007-12-02 22:56:42Z scott $ + +**/ +#ifdef TEST + +#include "chess.h" + +void TestIcs(void) +/** + +Routine description: + + Test the ICS-style (d2d4) move parser. + +Parameters: + + void + +Return value: + + void + +**/ +{ + typedef struct _TEST_ICS_MOVE + { + CHAR *szICS; + MOVE mv; + } + TEST_SAN_MOVE; + TEST_SAN_MOVE x[] = + { + { "e1c1" , { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "o-o-o" , { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "a2xc4" , { MAKE_MOVE(A2, C4, WHITE_BISHOP, BLACK_PAWN, 0, 0) } }, + { "h2-h3" , { MAKE_MOVE(H2, H3, WHITE_PAWN, 0, 0, 0) } }, + { "h2h4" , { MAKE_MOVE(H2, H4, WHITE_PAWN, 0, 0, MOVE_FLAG_SPECIAL) } }, + { "h4h5" , { MAKE_MOVE(0, 0, 0, 0, 0, 0 ) } }, + { "b2c4" , { MAKE_MOVE(B2, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } }, + { "b6c4" , { MAKE_MOVE(B6, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } }, + { "b6d7" , { MAKE_MOVE(B6, D7, WHITE_KNIGHT, BLACK_BISHOP, 0, 0) } }, + { "h2xg3" , { MAKE_MOVE(H2, G3, WHITE_PAWN, BLACK_KNIGHT, 0, 0) } }, + { "d2d7++", { MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } }, + { "d2d7#" , { MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } }, + { "f5f6" , { MAKE_MOVE(F5, F6, WHITE_PAWN, 0, 0, 0) } }, + { "b7b8=Q", { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } }, + { "b7b8Q" , { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } }, + { "b7xa8N", { MAKE_MOVE(B7, A8, WHITE_PAWN, BLACK_ROOK, WHITE_KNIGHT, MOVE_FLAG_SPECIAL) } }, + }; + POSITION pos; + ULONG u; + MOVE mvICS; + + Trace("Testing ICS 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__); + } + + mvICS = ParseMoveIcs(x[u].szICS, &pos); + if (mvICS.uMove != x[u].mv.uMove) + { + UtilPanic(TESTCASE_FAILURE, + NULL, "ParseMoveICS", NULL, NULL, + __FILE__, __LINE__); + } + } +} +#endif |
