refactor(core): enhance MoveType to support capture flag and update related logic
Build & Test (NowChessSystems) TeamCity build failed

This commit is contained in:
2026-04-05 17:28:56 +02:00
parent 432385c7b0
commit 1fc5e43e77
12 changed files with 109 additions and 208 deletions
@@ -1,15 +0,0 @@
package de.nowchess.api.game
import de.nowchess.api.board.{PieceType, Square}
import de.nowchess.api.move.PromotionPiece
/** A single move recorded in game history and PGN workflows. */
case class HistoryMove(
from: Square,
to: Square,
castleSide: Option[String] = None,
promotionPiece: Option[PromotionPiece] = None,
pieceType: PieceType = PieceType.Pawn,
isCapture: Boolean = false
)
@@ -9,7 +9,7 @@ enum PromotionPiece:
/** Classifies special move semantics beyond a plain quiet move or capture. */
enum MoveType:
/** A normal move or capture with no special rule. */
case Normal
case Normal(isCapture: Boolean = false)
/** Kingside castling (O-O). */
case CastleKingside
/** Queenside castling (O-O-O). */
@@ -29,5 +29,5 @@ enum MoveType:
final case class Move(
from: Square,
to: Square,
moveType: MoveType = MoveType.Normal
moveType: MoveType = MoveType.Normal()
)
@@ -11,7 +11,12 @@ class MoveTest extends AnyFunSuite with Matchers:
test("Move defaults moveType to Normal") {
val m = Move(e2, e4)
m.moveType shouldBe MoveType.Normal
m.moveType shouldBe MoveType.Normal()
}
test("MoveType.Normal supports capture flag") {
val m = Move(e2, e4, MoveType.Normal(isCapture = true))
m.moveType shouldBe MoveType.Normal(true)
}
test("Move stores from and to squares") {