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)
|
||||
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)
|
||||
dl.DrawHoverSheen(min, max, accent, key, hovered: false);
|
||||
|
||||
foreach (var key in keys)
|
||||
if (DrawListExtensions.IsSheenTracked(key))
|
||||
return SelfTestStepResult.Fail;
|
||||
|
||||
return SelfTestStepResult.Pass;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,11 @@ internal static class DrawListExtensions
|
||||
|
||||
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(
|
||||
this ImDrawListPtr dl,
|
||||
Vector2 min,
|
||||
|
||||
Reference in New Issue
Block a user