diff options
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/perft.bash | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/scripts/perft.bash b/scripts/perft.bash new file mode 100755 index 0000000..b3a942a --- /dev/null +++ b/scripts/perft.bash @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +status=0 + +testPerft() { + local fen="$1" + local depth="$2" + local expected="$3" + + echo "" + + result=$(./build/mono "perft" $depth "$fen") + count=$(echo "$result" | jq -r '.result') + took=$(echo "$result" | jq -r '.ms') + if [ "$count" = "$expected" ]; then + echo "Results match" + echo "Took: $took ms" + else + echo "RESULTS DONT MATCH" + echo "Took: $took ms" + echo "Depth: $depth" + echo "Fen: $fen" + echo "Expected: $expected" + echo "Got: $count" + status=1 + fi +} + +configs=( + # starting pos + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|1|20" + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|2|400" + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|3|8902" + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|4|197281" + "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|5|4865609" + + # kiwipete + "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -|1|48" + "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -|2|2039" + "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -|3|97862" + "r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -|4|4085603" + + # other positions + "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1|1|14" + "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1|2|191" + "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1|3|2812" + "8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - 0 1|4|43238" + + # even more cool ones + "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1|1|6" + "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1|2|264" + "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1|3|9467" + "r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq - 0 1|4|422333" +) + +for config in "${configs[@]}"; do + IFS='|' read -r fen depth expected <<< "$config" + testPerft "$fen" "$depth" "$expected" + if [ $status -ne 0 ]; then + exit "$status" + fi +done
\ No newline at end of file |
