test(rendering): name transient parity differences
When counts diverge, preserve ordered comparison and report the first concrete extra or differing payload. Include retained-classification state in downstream mismatch logs so reveal-edge lifecycle failures can be attributed without weakening the referee.
This commit is contained in:
parent
54d17eb446
commit
528dec6072
1 changed files with 66 additions and 6 deletions
|
|
@ -420,7 +420,8 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
_classifiedOutputFirstMismatch = mismatch;
|
||||
_log?.Invoke(
|
||||
"[render-classified-output] first mismatch: "
|
||||
+ mismatch);
|
||||
+ mismatch
|
||||
+ $" classification={_packedClassification}");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -458,7 +459,8 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
_selectionOutputFirstMismatch = selectionMismatch;
|
||||
_log?.Invoke(
|
||||
"[render-selection-output] first mismatch: "
|
||||
+ selectionMismatch);
|
||||
+ selectionMismatch
|
||||
+ $" classification={_packedClassification}");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -480,8 +482,22 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
{
|
||||
if (expected.Count != actual.Count)
|
||||
{
|
||||
int shared = Math.Min(expected.Count, actual.Count);
|
||||
for (int index = 0; index < shared; index++)
|
||||
{
|
||||
if (expected[index] != actual[index])
|
||||
{
|
||||
return $"field=draw index={index} "
|
||||
+ $"expected={expected[index]} "
|
||||
+ $"actual={actual[index]}";
|
||||
}
|
||||
}
|
||||
|
||||
string extra = expected.Count > actual.Count
|
||||
? $"firstExtraExpected={expected[shared]}"
|
||||
: $"firstExtraActual={actual[shared]}";
|
||||
return $"field=drawCount expected={expected.Count} "
|
||||
+ $"actual={actual.Count}";
|
||||
+ $"actual={actual.Count} {extra}";
|
||||
}
|
||||
|
||||
for (int index = 0; index < expected.Count; index++)
|
||||
|
|
@ -503,8 +519,22 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
{
|
||||
if (expected.Count != actual.Count)
|
||||
{
|
||||
int shared = Math.Min(expected.Count, actual.Count);
|
||||
for (int index = 0; index < shared; index++)
|
||||
{
|
||||
if (expected[index] != actual[index])
|
||||
{
|
||||
return $"field=part index={index} "
|
||||
+ $"expected={expected[index]} "
|
||||
+ $"actual={actual[index]}";
|
||||
}
|
||||
}
|
||||
|
||||
string extra = expected.Count > actual.Count
|
||||
? $"firstExtraExpected={expected[shared]}"
|
||||
: $"firstExtraActual={actual[shared]}";
|
||||
return $"field=partCount expected={expected.Count} "
|
||||
+ $"actual={actual.Count}";
|
||||
+ $"actual={actual.Count} {extra}";
|
||||
}
|
||||
|
||||
for (int index = 0; index < expected.Count; index++)
|
||||
|
|
@ -728,8 +758,24 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
}
|
||||
if (_packedExpected.Count != _packedActual.Count)
|
||||
{
|
||||
int shared = Math.Min(
|
||||
_packedExpected.Count,
|
||||
_packedActual.Count);
|
||||
for (int index = 0; index < shared; index++)
|
||||
{
|
||||
if (_packedExpected[index] != _packedActual[index])
|
||||
{
|
||||
return $"field=meshPart index={index} "
|
||||
+ $"expected={_packedExpected[index]} "
|
||||
+ $"actual={_packedActual[index]}";
|
||||
}
|
||||
}
|
||||
|
||||
string extra = _packedExpected.Count > _packedActual.Count
|
||||
? $"firstExtraExpected={_packedExpected[shared]}"
|
||||
: $"firstExtraActual={_packedActual[shared]}";
|
||||
return $"field=count expected={_packedExpected.Count} "
|
||||
+ $"actual={_packedActual.Count}";
|
||||
+ $"actual={_packedActual.Count} {extra}";
|
||||
}
|
||||
|
||||
for (int index = 0; index < _packedExpected.Count; index++)
|
||||
|
|
@ -759,8 +805,22 @@ internal sealed class RenderScenePViewFrameProductController :
|
|||
{
|
||||
if (_expected.Count != _actual.Count)
|
||||
{
|
||||
int shared = Math.Min(_expected.Count, _actual.Count);
|
||||
for (int index = 0; index < shared; index++)
|
||||
{
|
||||
if (_expected[index] != _actual[index])
|
||||
{
|
||||
return $"field=candidate index={index} "
|
||||
+ $"expected={_expected[index]} "
|
||||
+ $"actual={_actual[index]}";
|
||||
}
|
||||
}
|
||||
|
||||
string extra = _expected.Count > _actual.Count
|
||||
? $"firstExtraExpected={_expected[shared]}"
|
||||
: $"firstExtraActual={_actual[shared]}";
|
||||
return $"field=count expected={_expected.Count} "
|
||||
+ $"actual={_actual.Count}";
|
||||
+ $"actual={_actual.Count} {extra}";
|
||||
}
|
||||
|
||||
for (int i = 0; i < _expected.Count; i++)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue