Index enemy event duplicate identities

This commit is contained in:
2026-08-09 02:31:28 +00:00
parent b70d9f77e3
commit b3ebfcef37
4 changed files with 79 additions and 9 deletions

View File

@@ -83,6 +83,21 @@ func TestNormalizeUsesExplicitKindOrderAndPreservesDistinctObservations(t *testi
}
}
func TestNormalizePreservesDistinctEvidenceWhenEncodedKeysCoincide(t *testing.T) {
invalidSourceID := string([]byte{'s', 0xff})
replacementSourceID := "s\uFFFD"
document := &source.SourceDocument{ID: invalidSourceID, Units: []source.SourceUnit{{ID: 1}}}
input := dnd.EnemyEventList{Events: []dnd.EnemyEvent{
{Name: "Ashfang", Kind: dnd.EnemyEventKindEngaged, SourceRefs: []source.SourceRef{{SourceID: invalidSourceID, StartUnitID: 1, EndUnitID: 1}}},
{Name: "Ashfang", Kind: dnd.EnemyEventKindEngaged, SourceRefs: []source.SourceRef{{SourceID: replacementSourceID, StartUnitID: 1, EndUnitID: 1}}},
}}
result, err := newNormalizer(t, npcReferences(t)).Normalize(context.Background(), normalizeRequest(document, input, contracts.ReferenceSet{}))
if err != nil || len(result.Value.Events) != 2 || hasWarning(result.Warnings, ReasonCodeDuplicateCollapsed) {
t.Fatalf("Normalize() = %#v, %v; want distinct evidence observations retained", result, err)
}
}
func TestNormalizeIsIdempotentAndPreservesEmptyRepresentation(t *testing.T) {
normalizer := newNormalizer(t, npcReferences(t))
for _, input := range []dnd.EnemyEventList{{}, {Events: []dnd.EnemyEvent{}}} {