43 lines
2.2 KiB
Python
43 lines
2.2 KiB
Python
import sys
|
|
import timeit
|
|
from pathlib import Path
|
|
from argparse import Namespace, ArgumentParser
|
|
from compare_positions import main as test
|
|
|
|
|
|
|
|
def main(args: Namespace) -> int:
|
|
print("[S] Starting test suite")
|
|
successful = []
|
|
failed = []
|
|
positions = args.positions.read_text().splitlines()
|
|
start = timeit.default_timer()
|
|
longest_fen = max(sorted([len(fen) for fen in positions]))
|
|
for i, fen in enumerate(positions):
|
|
fen = fen.strip(" ")
|
|
fen += " " * (longest_fen - len(fen))
|
|
sys.stdout.write(f"\r[S] Testing {fen} ({i + 1}/{len(positions)})\033[K")
|
|
args.fen = fen
|
|
args.silent = not args.no_silent
|
|
if test(args) == 0:
|
|
successful.append(fen)
|
|
else:
|
|
failed.append(fen)
|
|
stop = timeit.default_timer()
|
|
print(f"\r[S] Ran {len(positions)} tests at depth {args.ply} in {stop - start:.2f} seconds ({len(successful)} successful, {len(failed)} failed)\033[K")
|
|
if failed and args.show_failures:
|
|
print("[S] The following FENs failed to pass the test:", end="")
|
|
print("\n\t".join(failed))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = ArgumentParser(description="Run a set of tests using compare_positions.py")
|
|
parser.add_argument("--ply", "-d", type=int, required=True, help="The depth to stop at, expressed in plys (half-moves)")
|
|
parser.add_argument("--bulk", action="store_true", help="Enable bulk-counting for Nimfish (much faster)", default=False)
|
|
parser.add_argument("--stockfish", type=Path, help="Path to the stockfish executable. Defaults to '' (detected automatically)", default=None)
|
|
parser.add_argument("--nimfish", type=Path, help="Path to the nimfish executable. Defaults to '' (detected automatically)", default=None)
|
|
parser.add_argument("--positions", type=Path, help="Location of the file containing FENs to test, one per line. Defaults to 'tests/positions.txt'",
|
|
default=Path("tests/positions.txt"))
|
|
parser.add_argument("--no-silent", action="store_true", help="Do not suppress output from compare_positions.py (defaults)", default=False)
|
|
parser.add_argument("--show-failures", action="store_true", help="Show which FENs failed to pass the test", default=False)
|
|
sys.exit(main(parser.parse_args())) |