Skip to content

Commit 84abe2a

Browse files
committed
resolve same additions on both sides automatically
1 parent 6c0ffe5 commit 84abe2a

2 files changed

Lines changed: 34 additions & 3 deletions

File tree

SharpDiffLib.Test/MergeDiffs/ArrayOfPrimitives.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,30 @@ public void BothSidesAddedOne()
144144
Assert.IsTrue(conflicts.HasConflicts);
145145
}
146146

147+
[TestMethod]
148+
public void BothSidesAddedSame()
149+
{
150+
var left = DiffResultFactory.Ordered<int>.Create()
151+
.Added(3, 3)
152+
.Added(3, 4)
153+
.MakeDiff();
154+
var right = DiffResultFactory.Ordered<int>.Create()
155+
.Added(3, 3)
156+
.Added(3, 4)
157+
.MakeDiff();
158+
159+
IConflictContainer conflicts;
160+
var result = Merger.Instance.Partial.MergeDiffs(left, right, out conflicts);
161+
162+
var merged = DiffResultFactory.Ordered<int>.Create()
163+
.Added(3, 3)
164+
.Added(3, 4)
165+
.MakeDiff();
166+
167+
Assert.AreEqual(merged, result);
168+
Assert.IsFalse(conflicts.HasConflicts);
169+
}
170+
147171
[TestMethod]
148172
public void BothSidesAddedTwo()
149173
{

SharpDiffLib/algorithms/mergeDiffs/collection/ordered/MergeOrderedCollectionDiffs.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,16 @@ private void ProcessConflicts(List<IDiffItem> ret, List<IDiffOrderedCollectionIt
6969

7070
if (addedRight != null && addedLeft != null)
7171
{
72-
DiffAnyConflicted conflict = new DiffAnyConflicted(addedLeft, addedRight);
73-
ret.Add(conflict);
74-
conflicts.RegisterConflict(conflict);
72+
if (addedLeft.Count == addedRight.Count && addedLeft.Zip(addedRight, (a, b) => a.IsSame(b)).All(x => x))
73+
{
74+
ret.AddRange(addedLeft);
75+
}
76+
else
77+
{
78+
DiffAnyConflicted conflict = new DiffAnyConflicted(addedLeft, addedRight);
79+
ret.Add(conflict);
80+
conflicts.RegisterConflict(conflict);
81+
}
7582
}
7683
else if (addedLeft != null)
7784
{

0 commit comments

Comments
 (0)