aboutsummaryrefslogtreecommitdiff
path: root/scripts/tests/hash.bash
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tests/hash.bash')
-rwxr-xr-xscripts/tests/hash.bash53
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/tests/hash.bash b/scripts/tests/hash.bash
new file mode 100755
index 0000000..92be2e6
--- /dev/null
+++ b/scripts/tests/hash.bash
@@ -0,0 +1,53 @@
+#!/usr/bin/env bash
+
+status=0
+
+testZobrist() {
+ local name="$1"
+ local fen="$2"
+ local moves="$3"
+ local expected="$4"
+
+ echo ""
+
+ resultRaw=$(./build/mono hash "$fen" $moves)
+ result=$(echo $resultRaw | jq -r '.hash')
+ took=$(echo $resultRaw | jq -r '.ms')
+ if [ "$result" = "$expected" ]; then
+ echo "OK: $name, Took: $took"
+ else
+ echo "WRONG: $name"
+ echo "Expected: $expected"
+ echo "Got: $result"
+ echo "Raw: $resultRaw"
+ status=1
+ fi
+}
+
+configs=(
+ # starting position
+ "startpos|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1||5060803636482931868"
+ # single moves
+ "1.d4|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|d2d4|9443689642921087454"
+ "1.e4|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4|9384546495678726550"
+ "1.c4|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|c2c4|14562399549841627035"
+ # two moves
+ "1.e4 e5|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4 e7e5|595762792459712928"
+ "1.e4 c5|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4 c7c5|7227515431820872427"
+ "1.e4 e6|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4 e7e6|17603279437685838276"
+ "1.e4 c6|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4 c7c6|1172755318016414253"
+ "1.d4 d5|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|d2d4 d7d5|460664201775194104"
+ # three moves
+ "1.e4 e5 2.Nf3|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|e2e4 e7e5 g1f3|15213300192948443293"
+ "1.d4 d5 2.c4|rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1|d2d4 d7d5 c2c4|9963937660605248767"
+ # different starting FEN
+ "Kiwipete|r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1||14109232545397825053"
+)
+
+for config in "${configs[@]}"; do
+ IFS='|' read -r name fen moves expected <<< "$config"
+ testZobrist "$name" "$fen" "$moves" "$expected"
+ if [ $status -ne 0 ]; then
+ exit "$status"
+ fi
+done