aboutsummaryrefslogtreecommitdiff
path: root/scripts/tests/zobrist.bash
blob: bcfc437ffb243cab94b9623342313a6992f56e60 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env bash

status=0

testZobrist() {
    local name="$1"
    local fen="$2"
    local moves="$3"
    local expected="$4"

    echo ""

    resultRaw=$(./build/mono zobrist "$fen" $moves)
    result=$(echo $resultRaw | jq -r '.hash')
    took=$(echo $resultRaw | jq -r '.ms')
    if [ "$result" = "$expected" ]; then
        echo "PASS: $name, Took: $took"
    else
        echo "FAIL: $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