Project sequence evidence through item mappings

This commit is contained in:
2026-10-23 18:07:15 +00:00
parent 7b04dc6a50
commit f6b02dec03
10 changed files with 374 additions and 66 deletions

View File

@@ -48,6 +48,16 @@ func TestFragmentVersionClaimUsesAssignedSequenceProjection(t *testing.T) {
if node := fragmentVersionClaimProjected(fragment, &VersionRule{Path: Keys("items").Index(1).Key("version")}, 1, rangeForPeer); node == nil || node.Text != "v1" {
t.Fatalf("assigned peer index 1 claim = %#v, want its version node", node)
}
mappedRange := []sequenceRange{{
sourceIndex: 1, path: Keys("items"), start: 0, end: 3,
items: []sequenceItemProjection{{inputIndex: 0, outputIndex: 2}},
}}
if node := fragmentVersionClaimProjected(fragment, &VersionRule{Path: Keys("items").Index(0).Key("version")}, 1, mappedRange); node != nil {
t.Fatalf("unassigned mapped peer index claimed a version: %#v", node)
}
if node := fragmentVersionClaimProjected(fragment, &VersionRule{Path: Keys("items").Index(2).Key("version")}, 1, mappedRange); node == nil || node.Text != "v1" {
t.Fatalf("mapped peer index 2 claim = %#v, want its version node", node)
}
nested := sourceVersionTestDocument(t, "items: [{nested: [{version: nested-v}]}]\n")
nestedRanges := []sequenceRange{
{sourceIndex: 1, path: Keys("items"), start: 1, end: 2},