From 6a39e28205d44e96da72728c0a3d4d6468962539 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 10 Aug 2026 15:04:16 +0200 Subject: adding json based perft tests --- src/main.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 51 insertions(+), 3 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 4469e40..a2af33f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,13 +1,61 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "board/board.hpp" #include "misc.hpp" #include "uci.hpp" #include "zobrist.hpp" -#include -int main() { +static void perft(int argc, char *argv[]) { + if (argc != 4 || std::string(argv[1]) != "perft") { + std::cout << "Usage: ./mono\n"; + std::cout << " ./mono perft \n"; + exit(1); + } + + int depth = -1; + try { + depth = std::stoi(argv[2]); + } catch (const std::exception &) { + std::cout << "info string usage: ./mono perft \n"; + exit(1); + } + + if (depth < 0) { + std::cout << "info string usage: ./mono perft \n"; + exit(1); + } + + std::string fen = argv[3]; + + auto start = std::chrono::steady_clock::now(); + + Game game = initBoard(fen, nullptr); + uint64_t count = MoveGenTest(depth, &game); + + auto end = std::chrono::steady_clock::now(); + auto ms = std::chrono::duration_cast(end - start) + .count(); + std::ostringstream oss; + oss << "{\"ms\": " << ms << ", \"result\": " << count << "}"; + + std::cout << oss.str() << std::endl; +} + +int main(int argc, char *argv[]) { InitZobrist(); - std::cout << engine_info(); + if (argc != 1) { + perft(argc, argv); + return 0; + } + std::cout << engine_info(); Uci(); return 0; } -- cgit v1.2.3