A1: harden HoverSheenAllocStep with real dictionary-footprint assertion
This commit is contained in:
@@ -39,10 +39,21 @@ internal sealed class HoverSheenAllocStep : ISelfTestStep
|
|||||||
foreach (var key in keys)
|
foreach (var key in keys)
|
||||||
dl.DrawHoverSheen(min, max, accent, key, hovered: true);
|
dl.DrawHoverSheen(min, max, accent, key, hovered: true);
|
||||||
|
|
||||||
// Un-hover sweep to verify the cleanup path drops the entries.
|
// Hovered loop must have registered exactly the three constant keys
|
||||||
|
// (no per-frame growth/duplication) — assert via observable state,
|
||||||
|
// not an unconditional pass (K7 false-green fix).
|
||||||
|
foreach (var key in keys)
|
||||||
|
if (!DrawListExtensions.IsSheenTracked(key))
|
||||||
|
return SelfTestStepResult.Fail;
|
||||||
|
|
||||||
|
// Un-hover sweep must drop every entry through the cleanup branch.
|
||||||
foreach (var key in keys)
|
foreach (var key in keys)
|
||||||
dl.DrawHoverSheen(min, max, accent, key, hovered: false);
|
dl.DrawHoverSheen(min, max, accent, key, hovered: false);
|
||||||
|
|
||||||
|
foreach (var key in keys)
|
||||||
|
if (DrawListExtensions.IsSheenTracked(key))
|
||||||
|
return SelfTestStepResult.Fail;
|
||||||
|
|
||||||
return SelfTestStepResult.Pass;
|
return SelfTestStepResult.Pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,11 @@ internal static class DrawListExtensions
|
|||||||
|
|
||||||
private static readonly Dictionary<string, DateTime> SheenStarts = new();
|
private static readonly Dictionary<string, DateTime> SheenStarts = new();
|
||||||
|
|
||||||
|
// Test-observability hook for HoverSheenAllocStep: lets the self-test
|
||||||
|
// assert the hover/un-hover dictionary contract via real state instead
|
||||||
|
// of an unconditional pass (K7 false-green fix). Not a runtime path.
|
||||||
|
internal static bool IsSheenTracked(string elementId) => SheenStarts.ContainsKey(elementId);
|
||||||
|
|
||||||
public static void DrawHoverSheen(
|
public static void DrawHoverSheen(
|
||||||
this ImDrawListPtr dl,
|
this ImDrawListPtr dl,
|
||||||
Vector2 min,
|
Vector2 min,
|
||||||
|
|||||||
Reference in New Issue
Block a user