Skip to content

Commit ea90193

Browse files
authored
fix: don't add empty id/authors (#1052)
1 parent 5a12652 commit ea90193

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

app/src/game/pgn/pgn_builder.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,18 @@ PgnBuilder::PgnBuilder(const config::Pgn& pgn_config, const MatchData& match, st
3434
pgn_generator_.addHeader("Result", getResultFromWhiteMatch(white_player));
3535

3636
if (!pgn_config_.min) {
37-
pgn_generator_.addHeader("EngineWhiteName", white_player.uci_name);
38-
pgn_generator_.addHeader("EngineWhiteAuthor", white_player.uci_author);
39-
pgn_generator_.addHeader("EngineBlackName", black_player.uci_name);
40-
pgn_generator_.addHeader("EngineBlackAuthor", black_player.uci_author);
37+
if (!white_player.uci_name.empty()) {
38+
pgn_generator_.addHeader("EngineWhiteName", white_player.uci_name);
39+
}
40+
if (!white_player.uci_author.empty()) {
41+
pgn_generator_.addHeader("EngineWhiteAuthor", white_player.uci_author);
42+
}
43+
if (!black_player.uci_name.empty()) {
44+
pgn_generator_.addHeader("EngineBlackName", black_player.uci_name);
45+
}
46+
if (!black_player.uci_author.empty()) {
47+
pgn_generator_.addHeader("EngineBlackAuthor", black_player.uci_author);
48+
}
4149
}
4250

4351
if (match_.fen != chess::constants::STARTPOS || is_frc_variant) {

app/tests/pgn_builder_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,22 @@ Nf6 {+10.15/18 1.821s, engine2 got checkmated} 1-0
5656
CHECK(pgn_builder.get() == expected);
5757
}
5858

59+
TEST_CASE("PGN omits empty UCI identity tags") {
60+
MatchData match_data;
61+
match_data.players.white.config.name = "engine1";
62+
match_data.players.white.uci_name = "Engine One";
63+
match_data.players.black.config.name = "engine2";
64+
match_data.players.black.uci_author = "Author Two";
65+
match_data.fen = chess::constants::STARTPOS;
66+
67+
const auto pgn = pgn::PgnBuilder(config::Pgn{}, match_data, 1).get();
68+
69+
CHECK(pgn.find("[EngineWhiteName \"Engine One\"]") != std::string::npos);
70+
CHECK(pgn.find("EngineWhiteAuthor") == std::string::npos);
71+
CHECK(pgn.find("EngineBlackName") == std::string::npos);
72+
CHECK(pgn.find("[EngineBlackAuthor \"Author Two\"]") != std::string::npos);
73+
}
74+
5975
TEST_CASE("PGN Creation Black Win") {
6076
MatchData match_data;
6177
match_data.players.white.config.name = "engine1";

0 commit comments

Comments
 (0)