summaryrefslogtreecommitdiff
path: root/src/testsan.c
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2016-06-01 18:58:58 -0700
committerScott Gasch <[email protected]>2016-06-01 18:58:58 -0700
commit3fd43cd5fcb22bb65bf2a92a25d95d801b11c9e0 (patch)
tree9b6443235d16ba17f094a1a1c7ae53d2bcb9267b /src/testsan.c
Initial checkin for typhoon chess engine.
Diffstat (limited to 'src/testsan.c')
-rw-r--r--src/testsan.c97
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