ModernUO/Projects/UOContent/Engines
Kamron Batman 64643dbc7e
test(pathing): consolidate the parity and lifecycle tests
Three files tested "parity" and none of them said which parity. They were in fact
three different layers, and the seams between them were the useful part, so they are
now one StepCacheParityTests that names them:

  ProbeMatchesSlowPath        StepProbe vs MovementImpl - is the bake right?
  CacheMatchesProbe           StepCache vs StepProbe    - is it stored and returned intact?
  CacheServesReachableWalkStates  StepCache vs MovementImpl - end to end, over the states A* visits

Merging them removed a duplicated stub Mobile, duplicated region seeds, and a
filename/class mismatch (StepProbeParityTests.cs declared StaticWalkabilityParityTests).
SwimBake_ProducesWetCells moved with it: it lived in the cache parity file but never
touched the cache - it is a probe test.

The layering is load-bearing, not cosmetic. Offsetting the cache's cell index by one
fails 7 of the 10 parity cases, and the 3 that stay green are exactly the ones that
don't touch the cache - so a failure localizes the fault instead of just reporting one.

Reflection: tests reached into StepCache._chunks via GetField in 9 places to inspect
or inject chunk state, each rebuilding the key and the cell-index arithmetic by hand.
StepCache now exposes GetResidentChunk and ResidentIndexInSync alongside the existing
internal test hooks (LazyReaderHasChunk, CurrentFindGeneration), and the shared
arithmetic moved to PathingTestSupport. All 9 reflection blocks are gone.

StepCacheLifecycleTests is regrouped by what it actually covers - promotion gate,
fallthrough routes, strata, swim layer, eviction - with the Tier4* names dropped
(same internal jargon already removed from the comments) and the repeated
offsets/strata byte-array construction replaced by builders.

Dropped Singleton_IsAvailable: it asserted that an inline-initialized static property
was not null, which it cannot be.

Test count 123 -> 122, entirely from that one removal; every parity case and every
behavioral assertion is preserved.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 19:48:57 -07:00
..
Advanced Search fix: Fixes parsing Rect3D and fixes AS contains name (#2333) 2026-02-09 22:49:18 -08:00
BuffIcons feat: Standardizes South/East selection gumps (#1839) 2025-02-14 00:15:14 -08:00
Bulk Orders feat: Adds Feature Flag System (#2328) 2026-02-07 12:02:57 -08:00
CannedEvil feat: Adds Mobile.Murderer virtual property, consolidates kill-threshold checks (#2355) 2026-03-06 08:36:41 -08:00
Character Creation fix: Fixes bug with non blessed starter spellbooks (#2368) 2026-03-13 00:20:23 -07:00
Chat fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
ConPVP feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Craft feat(throwing): core gargoyle Throwing skill (SA) (#2510) 2026-07-02 21:06:11 -07:00
Doom chore: Use var everywhere (#2294) 2025-12-27 16:47:28 -08:00
Ethics feat: Add zero-alloc interpolation handler to ValueStringBuilder, replace all StringBuilder usage (#2387) 2026-03-22 14:23:44 -07:00
Events fix: Streamlines event scheduler API. Adds months to weekly recurrence (#2178) 2025-05-07 22:42:44 -07:00
Factions feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
FeatureFlags feat: expand cache to nearly all mobiles + dynamic-obstacle pass (#2447) 2026-05-06 00:14:08 -07:00
Harvest chore: Use var everywhere (#2294) 2025-12-27 16:47:28 -08:00
Help feat: Add zero-alloc interpolation handler to ValueStringBuilder, replace all StringBuilder usage (#2387) 2026-03-22 14:23:44 -07:00
Khaldun feat: Converts PuzzleChest to generator, optimizes (#2318) 2026-01-26 21:20:01 -06:00
ML Quests feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Party fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
Pathing test(pathing): consolidate the parity and lifecycle tests 2026-07-12 19:48:57 -07:00
Plants feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Player Murder System feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Quests refactor: decompose mobile/corpse hair, delete VirtualHairInfo, fix removal serial (#2462) (#2463) 2026-06-06 14:33:28 -07:00
Spawners refactor(spawners): replace DynamicJson with typed SpawnerDto records (#2505) 2026-06-25 23:24:45 -07:00
Stealables feat(throwing): wire SA loot flavor + Valkyrie's Glaive stealable (#2512) 2026-07-02 22:28:55 -07:00
Treasures of Tokuno fix: Optimizes items to use default weights. (Part 1) (#2240) 2025-07-24 14:44:39 -07:00
UltimaStore fix: Fixes thread guard and cleans up incoming packet reader (#1641) 2023-12-19 17:04:09 -08:00
Veteran Rewards feat: Pre-Publish 14 Crafting (supersedes #2181, #2381) (#2476) 2026-06-07 20:27:22 -07:00
Virtues perf: Migrates Virtue gumps from legacy Gump to DynamicGump/StaticGump. (#2410) 2026-04-25 16:40:07 -07:00