Update codebase to remove clang warnings (and a couple of legit errors
[typhoon.git] / src / testsan.c
1 /**
2
3 Copyright (c) Scott Gasch
4
5 Module Name:
6
7     testsan.c
8
9 Abstract:
10
11     Tests the SAN-style (Nbd5) move parser. 
12
13 Author:
14
15     Scott Gasch ([email protected]) 13 May 2004
16
17 Revision History:
18
19     $Id: testsan.c 345 2007-12-02 22:56:42Z scott $
20
21 **/
22
23 #ifdef TEST
24 #include "chess.h"
25
26 void 
27 TestSan(void)
28 /**
29
30 Routine description:
31
32     Tests the SAN-style (Nbd5) move parser.
33
34 Parameters:
35
36     void
37
38 Return value:
39
40     void
41
42 **/
43 {
44     typedef struct _TEST_SAN_MOVE
45     {
46         CHAR *szSAN;
47         MOVE mv;
48     }
49     TEST_SAN_MOVE;
50     TEST_SAN_MOVE x[] = 
51     {
52         { "b8=Q",  { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } },
53         { "b8Q",   { MAKE_MOVE(B7, B8, WHITE_PAWN, 0, WHITE_QUEEN, MOVE_FLAG_SPECIAL) } },
54         { "o-o",   { MAKE_MOVE(0,0,0,0,0,0) } },
55         { "0-0",   { MAKE_MOVE(0,0,0,0,0,0) } },
56         { "o-o-o", { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } },
57         { "0-0-0", { MAKE_MOVE(E1, C1, WHITE_KING, 0, 0, MOVE_FLAG_SPECIAL) } },
58         { "Bxc4",  { MAKE_MOVE(A2, C4, WHITE_BISHOP, BLACK_PAWN, 0, 0) } },
59         { "Bec4",  { MAKE_MOVE(0,0,0,0,0,0) } },
60         { "h3",    { MAKE_MOVE(H2, H3, WHITE_PAWN, 0, 0, 0) } },
61         { "h4",    { MAKE_MOVE(H2, H4, WHITE_PAWN, 0, 0, MOVE_FLAG_SPECIAL) } },
62         { "N2xc4", { MAKE_MOVE(B2, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } },
63         { "Nb6c4", { MAKE_MOVE(B6, C4, WHITE_KNIGHT, BLACK_PAWN, 0, 0) } },
64         { "Nxd7",  { MAKE_MOVE(B6, D7, WHITE_KNIGHT, BLACK_BISHOP, 0, 0) } },
65         { "hxg3",  { MAKE_MOVE(H2, G3, WHITE_PAWN, BLACK_KNIGHT, 0, 0) } },
66         { "Qxd7++",{ MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } },
67         { "Qxd7#" ,{ MAKE_MOVE(D2, D7, WHITE_QUEEN, BLACK_BISHOP, 0, 0) } },
68         { "f6",    { MAKE_MOVE(F5, F6, WHITE_PAWN, 0, 0, 0) } },
69         { "bxa8=N",{ MAKE_MOVE(B7, A8, WHITE_PAWN, BLACK_ROOK, WHITE_KNIGHT, MOVE_FLAG_SPECIAL) } },
70     };
71     POSITION pos;
72     ULONG u;
73     MOVE mvSAN;
74     
75     Trace("Testing SAN parser code...\n");
76     for (u = 0;
77          u < ARRAY_LENGTH(x);
78          u++)
79     {
80         if (FALSE == FenToPosition(&pos, 
81                                    "r2kr3/pP1b2nb/1N6/5P2/2p5/6n1/BN1QBP1P/R3K2R w KQ - 0 1"))
82         {
83             UtilPanic(INCONSISTENT_STATE,
84                       NULL, NULL, NULL, NULL,
85                       __FILE__, __LINE__);
86         }
87
88         mvSAN = ParseMoveSan(x[u].szSAN, &pos);
89         if (mvSAN.uMove != x[u].mv.uMove)
90         {
91             UtilPanic(TESTCASE_FAILURE,
92                       NULL, "ParseMoveSan", NULL, NULL,
93                       __FILE__, __LINE__);
94         }
95     }
96 }
97 #endif