b80aa1b24b
- New TuningInvariantTests (6 tests). Two gaps the audit named:
* The six-site knob drift: adding a knob touches the struct field,
Defaults(), the TuningKnob const and three switches, and nothing
caught a knob wired into Apply but forgotten in ClampKnob. The clamp
is the only thing stopping a 0 reaching the i-frame divide, which
TuningConfig's own header records as "NaNs the kinematic body
permanently". Now every LIVE knob round-trips Apply -> Get against
ClampKnob.
The knob set is read by reflection, not assumed to be 0..Count:
CLAUDE.md reserves retired indices (20-23), so the space has holes
on purpose. A second test pins that those stay reserved — re-using
one would silently re-mean a value in saved feel profiles and in the
DebugOp wire payload.
* MeleeTiming had ZERO test references while producing the locked
20/12/25 contact ticks, and MeleeComboTests pins fixture values that
differ from the shipped defaults on nine of ten knobs. The new tests
assert RELATIONSHIPS against Defaults() — finisher contact stays
inside both CastFacingTicks and MeleeRecoverTicks — so a deliberate
retune stays green and only a broken coupling fails. That coupling
was previously enforced only by a [MenuItem] a human had to remember
to run.
- Test asmdef now references ProjectM.Authoring + Unity.Entities.Hybrid,
so bakers are reachable from tests at all (L18). Nothing referenced
them before, which is why "no prefab carries ChargerAuthoring" could
coexist with a green suite.
CORRECTION to the audit: "10 test files leak ECS Worlds" is REFUTED.
That finding came from counting `.Dispose()` tokens, which misses the
`using (world)` blocks these files actually use. Measured empirically:
World.All is 6 before the suite and 6 after — zero leaked.
304/304 green.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
882 B
JSON
36 lines
882 B
JSON
{
|
|
"name": "ProjectM.Tests.EditMode",
|
|
"rootNamespace": "ProjectM.Tests",
|
|
"references": [
|
|
"ProjectM.Simulation",
|
|
"ProjectM.Server",
|
|
"ProjectM.Client",
|
|
"ProjectM.Authoring",
|
|
"Unity.Entities.Hybrid",
|
|
"Unity.Entities",
|
|
"Unity.Transforms",
|
|
"Unity.Collections",
|
|
"Unity.Mathematics",
|
|
"Unity.Physics",
|
|
"Unity.CharacterController",
|
|
"Unity.NetCode",
|
|
"UnityEngine.TestRunner",
|
|
"UnityEditor.TestRunner"
|
|
],
|
|
"includePlatforms": [
|
|
"Editor"
|
|
],
|
|
"excludePlatforms": [],
|
|
"allowUnsafeCode": false,
|
|
"overrideReferences": true,
|
|
"precompiledReferences": [
|
|
"nunit.framework.dll"
|
|
],
|
|
"autoReferenced": false,
|
|
"defineConstraints": [
|
|
"UNITY_INCLUDE_TESTS"
|
|
],
|
|
"versionDefines": [],
|
|
"noEngineReferences": false
|
|
}
|