summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-12-27 10:40:09 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2022-12-27 10:40:09 +0100
commit5fdfda00a90063d6ba6b4b07c6043efa3fb6de84 (patch)
tree2fac3d643819bdbc7ce3fa86e250fa73d89dbb25
parentbb5d85cb65247280db97a686ad27d52a6806dabf (diff)
Cleaning promotion
-rw-r--r--src/ChessArbiter.cpp2
-rw-r--r--tests/chessarbiter.cpp6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/ChessArbiter.cpp b/src/ChessArbiter.cpp
index a6dddf3..30fc078 100644
--- a/src/ChessArbiter.cpp
+++ b/src/ChessArbiter.cpp
@@ -531,7 +531,7 @@ std::string ChessArbiter::ParseSAN(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
if(p=='Q' || p=='R' || p=='B' || p=='N'){
return p;
diff --git a/tests/chessarbiter.cpp b/tests/chessarbiter.cpp
index 96b5f3b..2b6bdec 100644
--- a/tests/chessarbiter.cpp
+++ b/tests/chessarbiter.cpp
@@ -496,6 +496,10 @@ TEST_CASE("Specific bugs found on a game", "[BugFixes]") {
CHECK(p == 'N');
p=a.ParseSANPromotion("d8=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');
} \ No newline at end of file