From 8f56a82104aa09bd1d3992ea28708d92cf25983e Mon Sep 17 00:00:00 2001 From: Janis Date: Mon, 6 Apr 2026 09:07:39 +0200 Subject: [PATCH] refactor: NCS-22 NCS-23 reworked modules and tests (#17) Reviewed-on: https://git.janis-eccarius.de/NowChess/NowChessSystems/pulls/17 --- .claude/settings.json | 4 +- .idea/gradle.xml | 2 + .idea/scala_compiler.xml | 2 +- compile | 0 coverage | 0 jacoco-reporter/test_counter.py | 12 + .../scala/de/nowchess/api/board/Board.scala | 3 + .../nowchess/api/board/CastlingRights.scala | 70 +++ .../scala/de/nowchess/api/board/Square.scala | 16 + .../de/nowchess/api/game/GameContext.scala | 44 ++ .../de/nowchess/api/game/GameState.scala | 67 --- .../scala/de/nowchess/api/move/Move.scala | 4 +- .../de/nowchess/api/board/BoardTest.scala | 56 +- .../api/board/CastlingRightsTest.scala | 57 ++ .../de/nowchess/api/board/ColorTest.scala | 23 +- .../de/nowchess/api/board/PieceTest.scala | 63 +-- .../de/nowchess/api/board/PieceTypeTest.scala | 34 +- .../de/nowchess/api/board/SquareTest.scala | 65 +-- .../nowchess/api/game/GameContextTest.scala | 60 ++ .../de/nowchess/api/game/GameStateTest.scala | 77 --- .../scala/de/nowchess/api/move/MoveTest.scala | 56 +- .../nowchess/api/player/PlayerInfoTest.scala | 17 +- .../api/response/ApiResponseTest.scala | 36 +- modules/core/build.gradle.kts | 12 +- .../de/nowchess/chess/command/Command.scala | 19 +- .../chess/controller/GameController.scala | 106 ---- .../de/nowchess/chess/engine/GameEngine.scala | 466 +++++++--------- .../de/nowchess/chess/logic/CastleSide.scala | 23 - .../logic/CastlingRightsCalculator.scala | 31 -- .../chess/logic/EnPassantCalculator.scala | 32 -- .../de/nowchess/chess/logic/GameHistory.scala | 49 -- .../de/nowchess/chess/logic/GameRules.scala | 47 -- .../nowchess/chess/logic/MoveValidator.scala | 183 ------ .../nowchess/chess/notation/PgnExporter.scala | 54 -- .../nowchess/chess/notation/PgnParser.scala | 267 --------- .../de/nowchess/chess/observer/Observer.scala | 56 +- .../command/CommandInvokerBranchTest.scala | 274 ++++----- .../chess/command/CommandInvokerTest.scala | 78 +-- .../CommandInvokerThreadSafetyTest.scala | 131 ----- .../nowchess/chess/command/CommandTest.scala | 48 +- .../command/MoveCommandImmutabilityTest.scala | 65 --- .../chess/command/MoveCommandTest.scala | 70 +++ .../chess/controller/GameControllerTest.scala | 526 ------------------ .../chess/engine/EngineTestHelpers.scala | 40 ++ .../engine/GameEngineEdgeCasesTest.scala | 214 ------- .../engine/GameEngineGameEndingTest.scala | 12 +- .../GameEngineHandleFailedMoveTest.scala | 110 ---- .../engine/GameEngineIntegrationTest.scala | 178 ++++++ .../engine/GameEngineInvalidMovesTest.scala | 114 ---- .../chess/engine/GameEngineLoadGameTest.scala | 43 ++ .../chess/engine/GameEngineLoadPgnTest.scala | 165 ------ .../chess/engine/GameEngineNotationTest.scala | 127 +++++ .../chess/engine/GameEngineOutcomesTest.scala | 176 ++++++ .../engine/GameEnginePromotionTest.scala | 80 ++- .../chess/engine/GameEngineScenarioTest.scala | 132 +++++ .../engine/GameEngineSpecialMovesTest.scala | 209 +++++++ .../chess/engine/GameEngineTest.scala | 351 ------------ .../engine/MoveCommandDefaultsTest.scala | 110 ---- .../logic/CastlingRightsCalculatorTest.scala | 70 --- .../chess/logic/EnPassantCalculatorTest.scala | 101 ---- .../chess/logic/GameHistoryTest.scala | 104 ---- .../nowchess/chess/logic/GameRulesTest.scala | 161 ------ .../chess/logic/MoveValidatorTest.scala | 280 ---------- .../chess/notation/FenExporterTest.scala | 88 --- .../chess/notation/FenParserTest.scala | 134 ----- .../chess/notation/PgnExporterTest.scala | 114 ---- .../chess/notation/PgnParserTest.scala | 451 --------------- .../chess/notation/PgnValidatorTest.scala | 119 ---- .../observer/ObservableThreadSafetyTest.scala | 168 ------ .../chess/view/PieceUnicodeTest.scala | 43 -- .../de/nowchess/chess/view/RendererTest.scala | 41 -- modules/io/build.gradle.kts | 63 +++ .../de/nowchess/io/GameContextExport.scala | 7 + .../de/nowchess/io/GameContextImport.scala | 7 + .../de/nowchess/io/fen}/FenExporter.scala | 40 +- .../scala/de/nowchess/io/fen}/FenParser.scala | 64 ++- .../de/nowchess/io/pgn/PgnExporter.scala | 80 +++ .../scala/de/nowchess/io/pgn/PgnParser.scala | 184 ++++++ .../de/nowchess/io/fen/FenExporterTest.scala | 104 ++++ .../de/nowchess/io/fen/FenParserTest.scala | 55 ++ .../de/nowchess/io/pgn/PgnExporterTest.scala | 108 ++++ .../de/nowchess/io/pgn/PgnParserTest.scala | 131 +++++ .../de/nowchess/io/pgn/PgnValidatorTest.scala | 58 ++ modules/rule/build.gradle.kts | 63 +++ .../scala/de/nowchess/rules/RuleSet.scala | 39 ++ .../de/nowchess/rules/sets/DefaultRules.scala | 387 +++++++++++++ .../DefaultRulesStateTransitionsTest.scala | 300 ++++++++++ .../de/nowchess/rule/DefaultRulesTest.scala | 152 +++++ modules/ui/build.gradle.kts | 13 +- .../de/nowchess/ui/gui/ChessBoardView.scala | 117 ++-- .../de/nowchess/ui/gui/GUIObserver.scala | 35 +- .../de/nowchess/ui/terminal/TerminalUI.scala | 36 +- .../de/nowchess/ui/utils}/PieceUnicode.scala | 2 +- .../de/nowchess/ui/utils}/Renderer.scala | 4 +- .../test/scala/de/nowchess/ui/MainTest.scala | 22 - .../nowchess/ui/terminal/TerminalUITest.scala | 327 ----------- .../ui/utils/RendererAndUnicodeTest.scala | 46 ++ settings.gradle.kts | 8 +- 98 files changed, 3752 insertions(+), 5940 deletions(-) mode change 100644 => 100755 compile mode change 100644 => 100755 coverage create mode 100644 jacoco-reporter/test_counter.py create mode 100644 modules/api/src/main/scala/de/nowchess/api/board/CastlingRights.scala create mode 100644 modules/api/src/main/scala/de/nowchess/api/game/GameContext.scala delete mode 100644 modules/api/src/main/scala/de/nowchess/api/game/GameState.scala create mode 100644 modules/api/src/test/scala/de/nowchess/api/board/CastlingRightsTest.scala create mode 100644 modules/api/src/test/scala/de/nowchess/api/game/GameContextTest.scala delete mode 100644 modules/api/src/test/scala/de/nowchess/api/game/GameStateTest.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/controller/GameController.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/CastleSide.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/CastlingRightsCalculator.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/EnPassantCalculator.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/GameHistory.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/GameRules.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/logic/MoveValidator.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/notation/PgnExporter.scala delete mode 100644 modules/core/src/main/scala/de/nowchess/chess/notation/PgnParser.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/command/CommandInvokerThreadSafetyTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandImmutabilityTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/command/MoveCommandTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/controller/GameControllerTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/EngineTestHelpers.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineEdgeCasesTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineHandleFailedMoveTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineIntegrationTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineInvalidMovesTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadGameTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineLoadPgnTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineNotationTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineOutcomesTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineScenarioTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineSpecialMovesTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/GameEngineTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/engine/MoveCommandDefaultsTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/logic/CastlingRightsCalculatorTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/logic/EnPassantCalculatorTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/logic/GameHistoryTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/logic/GameRulesTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/logic/MoveValidatorTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/notation/FenExporterTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/notation/FenParserTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/notation/PgnExporterTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/notation/PgnParserTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/notation/PgnValidatorTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/observer/ObservableThreadSafetyTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/view/PieceUnicodeTest.scala delete mode 100644 modules/core/src/test/scala/de/nowchess/chess/view/RendererTest.scala create mode 100644 modules/io/build.gradle.kts create mode 100644 modules/io/src/main/scala/de/nowchess/io/GameContextExport.scala create mode 100644 modules/io/src/main/scala/de/nowchess/io/GameContextImport.scala rename modules/{core/src/main/scala/de/nowchess/chess/notation => io/src/main/scala/de/nowchess/io/fen}/FenExporter.scala (55%) rename modules/{core/src/main/scala/de/nowchess/chess/notation => io/src/main/scala/de/nowchess/io/fen}/FenParser.scala (62%) create mode 100644 modules/io/src/main/scala/de/nowchess/io/pgn/PgnExporter.scala create mode 100644 modules/io/src/main/scala/de/nowchess/io/pgn/PgnParser.scala create mode 100644 modules/io/src/test/scala/de/nowchess/io/fen/FenExporterTest.scala create mode 100644 modules/io/src/test/scala/de/nowchess/io/fen/FenParserTest.scala create mode 100644 modules/io/src/test/scala/de/nowchess/io/pgn/PgnExporterTest.scala create mode 100644 modules/io/src/test/scala/de/nowchess/io/pgn/PgnParserTest.scala create mode 100644 modules/io/src/test/scala/de/nowchess/io/pgn/PgnValidatorTest.scala create mode 100644 modules/rule/build.gradle.kts create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/RuleSet.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/sets/DefaultRules.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesStateTransitionsTest.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rule/DefaultRulesTest.scala rename modules/{core/src/main/scala/de/nowchess/chess/view => ui/src/main/scala/de/nowchess/ui/utils}/PieceUnicode.scala (96%) rename modules/{core/src/main/scala/de/nowchess/chess/view => ui/src/main/scala/de/nowchess/ui/utils}/Renderer.scala (91%) delete mode 100644 modules/ui/src/test/scala/de/nowchess/ui/MainTest.scala delete mode 100644 modules/ui/src/test/scala/de/nowchess/ui/terminal/TerminalUITest.scala create mode 100644 modules/ui/src/test/scala/de/nowchess/ui/utils/RendererAndUnicodeTest.scala diff --git a/.claude/settings.json b/.claude/settings.json index 8c2751d..c7ff639 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,6 +1,6 @@ { "enabledPlugins": { - "superpowers@claude-plugins-official": true, - "ui-ux-pro-max@ui-ux-pro-max-skill": true + "superpowers@claude-plugins-official": false, + "ui-ux-pro-max@ui-ux-pro-max-skill": false } } diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f1d0a36..59fb705 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -12,6 +12,8 @@ diff --git a/.idea/scala_compiler.xml b/.idea/scala_compiler.xml index a0f8d4f..1b2a733 100644 --- a/.idea/scala_compiler.xml +++ b/.idea/scala_compiler.xml @@ -5,7 +5,7 @@