intersectRunRun to use runAppendInterval

this avoid situations where two runs which are adjacent don't get collapsed to a
single run
This commit is contained in:
Matt Jaffee 2017-05-30 16:00:17 -05:00
parent 97346baa94
commit 8ec8fc556c
2 changed files with 5 additions and 4 deletions

View file

@ -1684,19 +1684,20 @@ func intersectRunRun(a, b *container) *container {
j++
} else if va.last > vb.last && va.start >= vb.start {
// |--vb-|-|-va--|
output.runs = append(output.runs, interval32{start: va.start, last: vb.last})
output.runAppendInterval(interval32{start: va.start, last: vb.last})
j++
} else if va.last > vb.last && va.start < vb.start {
// |--va|--vb--|--|
output.runs = append(output.runs, vb)
output.runAppendInterval(vb)
j++
} else if va.last <= vb.last && va.start >= vb.start {
// |--vb|--va--|--|
output.runs = append(output.runs, va)
output.runAppendInterval(va)
i++
} else if va.last <= vb.last && va.start < vb.start {
// |--va-|-|-vb--|
output.runs = append(output.runs, interval32{start: vb.start, last: va.last})
output.runAppendInterval(interval32{start: vb.start, last: va.last})
i++
}
}

View file

@ -413,7 +413,7 @@ func TestIntersectRunRun(t *testing.T) {
{
aruns: []interval32{{start: 1, last: 3}, {start: 5, last: 5}, {start: 7, last: 8}, {start: 9, last: 12}},
bruns: []interval32{{start: 5, last: 10}},
exp: []interval32{{start: 5, last: 5}, {start: 7, last: 8}, {start: 9, last: 10}},
exp: []interval32{{start: 5, last: 5}, {start: 7, last: 10}},
},
}
for i, test := range tests {