Part of #288.
// look for last '/'
stopChar = '/';
}
- else
+ else if (std::count(fenBoard.begin(), fenBoard.end(), '[') == 1)
{
// pocket is defined as [ and ]
stopChar = '[';
return NOK;
}
}
+ else
+ // allow to skip pocket
+ return OK;
// look for last '/'
for (auto it = fenBoard.rbegin()+offset; it != fenBoard.rend(); ++it)
},
"sittuyin": {
"8/8/4pppp/pppp4/4PPPP/PPPP4/8/8[KFRRSSNNkfrrssnn] w - - 0 1": (False, False), # startpos
- "k7/8/8/8/8/8/8/K7[] w - - 0 1": (True, True), # K vs K
+ "k7/8/8/8/8/8/8/K7 w - - 0 1": (True, True), # K vs K, skip pocket
"k6P/8/8/8/8/8/8/K7[] w - - 0 1": (True, True), # KP vs K
"k6P/8/8/8/8/8/8/K6p[] w - - 0 1": (False, False), # KP vs KP
"k7/8/8/8/8/8/8/KFF5[] w - - 0 1": (False, True), # KFF vs K
chai.expect(ffish.validateFen(board.fen(), variant)).to.equal(1);
board.delete();
}
- // alternative pocket piece formulation
+ // alternative or skipped pocket formulation
chai.expect(ffish.validateFen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/RB w KQkq - 3+3 0 1", "3check-crazyhouse")).to.equal(1);
chai.expect(ffish.validateFen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR/ w KQkq - 3+3 0 1", "3check-crazyhouse")).to.equal(1);
+ chai.expect(ffish.validateFen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 3+3 0 1", "3check-crazyhouse")).to.equal(1);
+ chai.expect(ffish.validateFen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[-] w KQkq - 3+3 0 1", "3check-crazyhouse")).to.equal(1);
// error id checks
chai.expect(ffish.validateFen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR[]wKQkq-3+301", "3check-crazyhouse")).to.equal(-10);