feat: NCS-10 Implement Pawn Promotion #12

Merged
lq64 merged 20 commits from feat/NCS-10 into main 2026-03-31 22:18:14 +02:00
Showing only changes of commit f3595306b8 - Show all commits
@@ -148,3 +148,21 @@ class GameEnginePromotionTest extends AnyFunSuite with Matchers:
events.filter(_.isInstanceOf[MoveExecutedEvent]) should not be empty
events.exists(_.isInstanceOf[CheckDetectedEvent]) should be (false)
}
test("completePromotion handles unexpected MoveResult from GameController") {
// Covers catch-all case in completePromotion (line 201-202)
// This test verifies error handling for unexpected MoveResult outcomes
val promotionBoard = FenParser.parseBoard("8/4P3/4k3/8/8/8/8/8").get
val engine = new GameEngine(initialBoard = promotionBoard)
val events = captureEvents(engine)
engine.processUserInput("e7e8")
// At this point engine should have pending promotion
engine.isPendingPromotion should be (true)
// completePromotion should handle the case gracefully
engine.completePromotion(PromotionPiece.Queen)
// Should fire MoveExecutedEvent (normal path)
events.exists(_.isInstanceOf[MoveExecutedEvent]) should be (true)
}