Files
jimmyabv b539aa403e fix: resolve compilation errors, add tests, fix configs, update docs
- Fix 9 CS0101 duplicate classes between Mono/ and Mono/Classic/
  - BoardManager -> ClassicBoardManager, SquareClick -> ClassicSquareClick
  - Delete duplicate Piece/Pawn/King/Queen/Rook/Bishop/Knight from Classic/
  - Merge GetAttackSquares into Piece base class with overrides
- Fix King castling: reject castling through/while in check
- Assign URP pipeline to QualitySettings (6 levels) and GraphicsSettings
- Fix template identifiers (DefaultCompany -> EarthGenesisGames)
- Delete orphaned SampleScene.unity and duplicate URP assets
- Fix test assembly reference (Assembly-CSharp -> AjedrezPurgatorio.Runtime)
- Remove 11 unused packages (multiplayer, visualscripting, terrain, etc.)
- Update BoardInputSystemSpike for ClassicSquareClick
- Write unit tests: CheckDetector, DrawDetector, MoveValidator
- Fix BalanceConfig JSON structure to match C# class fields
- Update stale documentation (~30 files)
  - architecture.md, ADR-0001, roadmap, gate-check, EPIC.md
  - PROJECT_STATUS.md, BLOQUEADORES_JUGABILIDAD.md
  - tech-debt-register.md
- Add Unity Editor setup guide (production/UNITY_EDITOR_SETUP.md)
2026-08-17 20:40:02 -03:00
..

Test Infrastructure

Engine: Unity 6000.3.3f1 (Unity 6.3 LTS) Test Framework: Unity Test Framework (NUnit) CI: .github/workflows/tests.yml Setup date: 2026-06-20

⚠️ Unity-specific exception: actual test code lives under Assets/Tests/, not here

This tests/ folder at the repo root is the engine-agnostic CCGS template location (directory-structure.md) and is kept for documentation only (this README, the smoke checklist, evidence records). It is not scanned by Unity.

Unity's AssetDatabase and Test Runner only discover assemblies (and generate the .meta files required to compile them) inside Assets/ (or Packages/). A root-level tests/ folder is invisible to Unity — confirmed empirically 2026-06-20: an asmdef + test script placed here produced zero .meta files and the Test Runner reported testcasecount="0".

Actual EditMode/PlayMode test code goes in Assets/Tests/:

Assets/Tests/
  EditMode/       # Unity Test Framework Edit Mode tests (no Play Mode needed)
  PlayMode/       # Unity Test Framework Play Mode tests (real scene required)

Game code that tests need to reference must live in an assembly with its own .asmdef — a custom assembly (like a test assembly) cannot reference the default Assembly-CSharp (it compiles last, after all .asmdef-based assemblies). See Assets/Game/Scripts/AjedrezPurgatorio.Runtime.asmdef, which the game's Mono/Classic and Mono/Combat scripts now compile into, and which Assets/Tests/PlayMode/PlayModeTests.asmdef references.

Directory Layout (this folder — docs only)

tests/
  unit/           # Pointer/notes only -- actual Unity unit tests live in Assets/Tests/EditMode/
  integration/    # Pointer/notes only -- actual Unity integration tests live in Assets/Tests/PlayMode/
  smoke/          # Critical path test list for /smoke-check gate
  evidence/       # Screenshot logs and manual test sign-off records

Running Tests

Window → General → Test Runner (Unity Test Framework is included by default in Unity 2019+, including Unity 6.3 LTS).

Test Naming

  • Files: [system]_[feature]_test.cs
  • Functions: Test_[scenario]_[expected]
  • Example: check_detection_test.csTest_PawnForwardSquare_NotReportedAsAttacked()

Story Type → Test Evidence

Story Type Required Evidence Location
Logic Automated unit test — must pass tests/unit/[system]/
Integration Integration test OR playtest doc tests/integration/[system]/
Visual/Feel Screenshot + lead sign-off tests/evidence/
UI Manual walkthrough OR interaction test tests/evidence/
Config/Data Smoke check pass production/qa/smoke-*.md

CI

Tests run automatically on every push to main and on every pull request. A failed test suite blocks merging. Requires a UNITY_LICENSE secret configured in the GitHub repository before CI runs will actually execute.

Known Constraint (see docs/tech-debt-register.md TD-001/TD-002)

Core board/check/checkmate logic in GameManagerClassic is coupled to MonoBehaviour and singleton managers (BoardManager.Instance, etc.). True isolated EditMode unit tests of this logic are not yet possible — tests targeting IsInCheck/IsCheckmate/IsLegalMove will need a PlayMode test with a real scene until TD-001 is addressed.