add piece-test
This commit is contained in:
12
Makefile
12
Makefile
@@ -64,10 +64,12 @@ CPPFLAGS += -DWARN_ON # brlib bug.h
|
|||||||
#CPPFLAGS += -DDEBUG_DEBUG # enable log() functions
|
#CPPFLAGS += -DDEBUG_DEBUG # enable log() functions
|
||||||
#CPPFLAGS += -DDEBUG_DEBUG_C # enable log() settings
|
#CPPFLAGS += -DDEBUG_DEBUG_C # enable log() settings
|
||||||
#CPPFLAGS += -DDEBUG_POOL # memory pools management
|
#CPPFLAGS += -DDEBUG_POOL # memory pools management
|
||||||
#CPPFLAGS += -DDEBUG_FEN # FEN decoding
|
|
||||||
#CPPFLAGS += -DDEBUG_POS # position.c
|
#CPPFLAGS += -DDEBUG_POS # position.c
|
||||||
#CPPFLAGS += -DDEBUG_MOVE # move generation
|
#CPPFLAGS += -DDEBUG_MOVE # move generation
|
||||||
|
|
||||||
|
# fen.c
|
||||||
|
#CPPFLAGS += -DDEBUG_FEN # FEN decoding
|
||||||
|
|
||||||
# attack.c
|
# attack.c
|
||||||
#CPPFLAGS += -DDEBUG_ATTACK_ATTACKERS1 # sq_attackers details
|
#CPPFLAGS += -DDEBUG_ATTACK_ATTACKERS1 # sq_attackers details
|
||||||
CPPFLAGS += -DDEBUG_ATTACK_ATTACKERS # sq_attackers
|
CPPFLAGS += -DDEBUG_ATTACK_ATTACKERS # sq_attackers
|
||||||
@@ -284,8 +286,9 @@ memcheck: targets
|
|||||||
##################################### test binaries
|
##################################### test binaries
|
||||||
.PHONY: testing test
|
.PHONY: testing test
|
||||||
|
|
||||||
TEST := fen-test bitboard-test movegen-test attack-test
|
TEST :=piece-test fen-test bitboard-test movegen-test attack-test
|
||||||
|
|
||||||
|
PIECE_OBJS := piece.o
|
||||||
FEN_OBJS := fen.o position.o piece.o bitboard.o board.o hyperbola-quintessence.o \
|
FEN_OBJS := fen.o position.o piece.o bitboard.o board.o hyperbola-quintessence.o \
|
||||||
attack.o
|
attack.o
|
||||||
BB_OBJS := fen.o position.o piece.o bitboard.o board.o hyperbola-quintessence.o \
|
BB_OBJS := fen.o position.o piece.o bitboard.o board.o hyperbola-quintessence.o \
|
||||||
@@ -297,6 +300,7 @@ ATTACK_OBJS := fen.o position.o piece.o bitboard.o board.o hyperbola-quintesse
|
|||||||
|
|
||||||
TEST := $(addprefix $(BINDIR)/,$(TEST))
|
TEST := $(addprefix $(BINDIR)/,$(TEST))
|
||||||
|
|
||||||
|
PIECE_OBJS := $(addprefix $(OBJDIR)/,$(PIECE_OBJS))
|
||||||
FEN_OBJS := $(addprefix $(OBJDIR)/,$(FEN_OBJS))
|
FEN_OBJS := $(addprefix $(OBJDIR)/,$(FEN_OBJS))
|
||||||
BB_OBJS := $(addprefix $(OBJDIR)/,$(BB_OBJS))
|
BB_OBJS := $(addprefix $(OBJDIR)/,$(BB_OBJS))
|
||||||
MOVEGEN_OBJS := $(addprefix $(OBJDIR)/,$(MOVEGEN_OBJS))
|
MOVEGEN_OBJS := $(addprefix $(OBJDIR)/,$(MOVEGEN_OBJS))
|
||||||
@@ -308,6 +312,10 @@ test:
|
|||||||
|
|
||||||
testing: $(TEST)
|
testing: $(TEST)
|
||||||
|
|
||||||
|
bin/piece-test: test/piece-test.c $(FEN_OBJS)
|
||||||
|
@echo compiling $@ test executable.
|
||||||
|
@$(CC) $(ALL_CFLAGS) $< $(FEN_OBJS) $(ALL_LDFLAGS) -o $@
|
||||||
|
|
||||||
bin/fen-test: test/fen-test.c test/common-test.h $(FEN_OBJS)
|
bin/fen-test: test/fen-test.c test/common-test.h $(FEN_OBJS)
|
||||||
@echo compiling $@ test executable.
|
@echo compiling $@ test executable.
|
||||||
@$(CC) $(ALL_CFLAGS) $< $(FEN_OBJS) $(ALL_LDFLAGS) -o $@
|
@$(CC) $(ALL_CFLAGS) $< $(FEN_OBJS) $(ALL_LDFLAGS) -o $@
|
||||||
|
@@ -35,6 +35,41 @@ struct fentest {
|
|||||||
*/
|
*/
|
||||||
//"4k3/pppppppp/8/8/8/8/PPPPPPPP/2BRK3 w - - 0 1",
|
//"4k3/pppppppp/8/8/8/8/PPPPPPPP/2BRK3 w - - 0 1",
|
||||||
//"4k3/pppppppp/8/8/8/8/PPPPPPPP/1B1R1K2 w - - 0 1",
|
//"4k3/pppppppp/8/8/8/8/PPPPPPPP/1B1R1K2 w - - 0 1",
|
||||||
|
{ MOVEGEN,
|
||||||
|
"illegal white e.p.",
|
||||||
|
"3k4/8/8/2qpPK2/8/8/8/8 w - d6 0 1",
|
||||||
|
},
|
||||||
|
{ MOVEGEN,
|
||||||
|
"illegal black e.p.",
|
||||||
|
"8/8/8/8/2QPpk2/8/8/3K4 b - d3 0 1",
|
||||||
|
},
|
||||||
|
|
||||||
|
{ MOVEGEN,
|
||||||
|
"illegal white e.p.",
|
||||||
|
"3k4/8/5K2/3pP3/8/2b5/8/8 w - d6 0 1",
|
||||||
|
},
|
||||||
|
{ MOVEGEN,
|
||||||
|
"illegal black e.p.",
|
||||||
|
"8/8/2B5/8/3Pp3/5k2/8/3K4 b - d3 0 1",
|
||||||
|
},
|
||||||
|
|
||||||
|
{ MOVEGEN,
|
||||||
|
"legal white e.p.",
|
||||||
|
"1K1k4/8/8/3pP3/8/6b1/8/8 w - d6 0 1",
|
||||||
|
},
|
||||||
|
{ MOVEGEN,
|
||||||
|
"legal black e.p.",
|
||||||
|
"8/8/6B1/8/3Pp3/8/8/1k1K4 b - d3 0 1",
|
||||||
|
},
|
||||||
|
|
||||||
|
{ MOVEGEN,
|
||||||
|
"white mate.",
|
||||||
|
"1nbqkbn1/ppp1pppp/8/r1rpP1K1/8/8/PPPP1PPP/RNBQ1BNR w - d6 0 1",
|
||||||
|
},
|
||||||
|
{ MOVEGEN,
|
||||||
|
"illegal e.p.",
|
||||||
|
"1nbqkbn1/ppp1pppp/8/r1rpP1K1/8/8/PPPP1PPP/RNBQ1BNR w - d6 0 1",
|
||||||
|
},
|
||||||
{ ATTACK,
|
{ ATTACK,
|
||||||
"checkers: a1 h1",
|
"checkers: a1 h1",
|
||||||
"1k6/8/8/8/8/8/8/r2K3r w - - 1 1"
|
"1k6/8/8/8/8/8/8/r2K3r w - - 1 1"
|
||||||
@@ -163,7 +198,7 @@ struct fentest {
|
|||||||
"6k1/6pp/R2p4/p1p5/8/1P1r3P/6P1/6K1 b - - 3 3"
|
"6k1/6pp/R2p4/p1p5/8/1P1r3P/6P1/6K1 b - - 3 3"
|
||||||
},
|
},
|
||||||
|
|
||||||
// below tests are from:
|
// some of tests below are from:
|
||||||
// - Rodent IV
|
// - Rodent IV
|
||||||
// - https://www.chessprogramming.net/perfect-perft/
|
// - https://www.chessprogramming.net/perfect-perft/
|
||||||
{ FEN | MOVEGEN,
|
{ FEN | MOVEGEN,
|
||||||
@@ -174,6 +209,10 @@ struct fentest {
|
|||||||
"",
|
"",
|
||||||
"8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1"
|
"8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1"
|
||||||
},
|
},
|
||||||
|
{ FEN | MOVEGEN,
|
||||||
|
"",
|
||||||
|
"8/2p5/3p4/Kp5r/1R3p1k/8/4P1P1/8 w - - 0 1"
|
||||||
|
},
|
||||||
{ FEN | MOVEGEN,
|
{ FEN | MOVEGEN,
|
||||||
"",
|
"",
|
||||||
"4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19"
|
"4rrk1/pp1n3p/3q2pQ/2p1pb2/2PP4/2P3N1/P2B2PP/4RRK1 b - - 7 19"
|
||||||
|
@@ -1,55 +1,20 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "debug.h"
|
#include "brlib.h"
|
||||||
|
|
||||||
#include "../src/fen.h"
|
#include "piece.h"
|
||||||
#include "../src/position.h"
|
|
||||||
#include "../src/bitboard.h"
|
|
||||||
|
|
||||||
int main(int ac, char**av)
|
int main(__unused int ac, __unused char**av)
|
||||||
{
|
{
|
||||||
pos_t *pos;
|
|
||||||
printf("zobi\n");fflush(stdout);
|
|
||||||
debug_init(6, stderr, true);
|
|
||||||
log_f(5, "kfsjdhg\n");
|
|
||||||
pos_pool_init();
|
|
||||||
pos = pos_get();
|
|
||||||
piece_pool_init();
|
|
||||||
|
|
||||||
if (ac == 1) {
|
piece_t p;
|
||||||
printf("zoba\n");fflush(stdout);
|
char *test="PNBRQKpnbrqk";
|
||||||
pos_startpos(pos);
|
|
||||||
} else {
|
for (u64 i = 0; i < sizeof(test); ++i) {
|
||||||
fen2pos(pos, av[1]);
|
char c1 = test[i], *c2;
|
||||||
|
p = piece_from_fen(c1);
|
||||||
|
c2 = piece_to_fen(p);
|
||||||
|
printf("c1=%c c2=%c\n", c1, *c2);
|
||||||
}
|
}
|
||||||
pos_print(pos);
|
return 0;
|
||||||
pos_pieces_print(pos);
|
|
||||||
|
|
||||||
printf("0x1c = 11100 = C1-E1:\n");
|
|
||||||
bitboard_print(0x1c);
|
|
||||||
|
|
||||||
printf("0x70 = 111 = A1-C1\n");
|
|
||||||
bitboard_print(0x70);
|
|
||||||
|
|
||||||
printf("0x0e = 1110 = B1-D1\n");
|
|
||||||
bitboard_print(0x0e);
|
|
||||||
|
|
||||||
printf("0x60 = 1100000 = F1-G1\n");
|
|
||||||
bitboard_print(0x60);
|
|
||||||
|
|
||||||
printf("A1:\n");
|
|
||||||
bitboard_print(A1);
|
|
||||||
|
|
||||||
printf("1:\n");
|
|
||||||
bitboard_print(1L);
|
|
||||||
printf("H1:\n");
|
|
||||||
bitboard_print(H1);
|
|
||||||
printf("C1:\n");
|
|
||||||
bitboard_print(C1);
|
|
||||||
printf("D1:\n");
|
|
||||||
bitboard_print(D1);
|
|
||||||
printf("C1|D1:\n");
|
|
||||||
bitboard_print(C1|D1);
|
|
||||||
printf("H8:\n");
|
|
||||||
bitboard_print(H8);
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user