Cleaning promotion

This commit is contained in:
Loic Guegan 2022-12-27 10:40:09 +01:00
parent bb5d85cb65
commit 5fdfda00a9
2 changed files with 6 additions and 2 deletions

View file

@ -531,7 +531,7 @@ std::string ChessArbiter::ParseSAN(const std::string &SANMove) {
} }
char ChessArbiter::ParseSANPromotion(const std::string &SANMove){ char ChessArbiter::ParseSANPromotion(const std::string &SANMove){
if(SANMove.length()>=4 && SANMove[0] - 'a' < 8 && SANMove[2]=='='){ if(SANMove.length()>=4 && SANMove[2]=='='){
char p=SANMove[3]; // Must be upper char p=SANMove[3]; // Must be upper
if(p=='Q' || p=='R' || p=='B' || p=='N'){ if(p=='Q' || p=='R' || p=='B' || p=='N'){
return p; return p;

View file

@ -496,6 +496,10 @@ TEST_CASE("Specific bugs found on a game", "[BugFixes]") {
CHECK(p == 'N'); CHECK(p == 'N');
p=a.ParseSANPromotion("d8=B+"); p=a.ParseSANPromotion("d8=B+");
CHECK(p == 'B'); CHECK(p == 'B');
p=a.ParseSANPromotion("d8=R"); p=a.ParseSANPromotion("h1=R");
CHECK(p == 'R');
p=a.ParseSANPromotion("a1=R");
CHECK(p == 'R');
p=a.ParseSANPromotion("c1=R");
CHECK(p == 'R'); CHECK(p == 'R');
} }