summaryrefslogtreecommitdiff
path: root/src/testics.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testics.c')
-rwxr-xr-xsrc/testics.c94
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