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