private void AddDiffs( DiffBuilder collectionBuilder, IReadOnlyList <T> x, IReadOnlyList <T> y, MemberSettings settings) { for (var i = 0; i < Math.Max(x.Count, y.Count); i++) { var xv = x.ElementAtOrMissing(i); var yv = y.ElementAtOrMissing(i); collectionBuilder.UpdateCollectionItemDiff(xv, yv, i, settings); } }
private void AddDiffs( DiffBuilder collectionBuilder, IEnumerable <T> x, IEnumerable <T> y, MemberSettings settings) { var i = -1; foreach (var pair in new PaddedPairs(x, y)) { i++; collectionBuilder.UpdateCollectionItemDiff(pair.X, pair.Y, new Skip(i), settings); } }
private void AddDiffs( DiffBuilder collectionBuilder, Array x, Array y, MemberSettings settings) { if (TryGetRankDiff(x, y, out var rankDiff)) { collectionBuilder.Add(rankDiff); return; } foreach (var index in x.Indices()) { collectionBuilder.UpdateCollectionItemDiff(x.GetValue(index), y.GetValue(index), new Index(index), settings); } }
private void AddDiffs( DiffBuilder collectionBuilder, IDictionary <TKey, TValue> x, IDictionary <TKey, TValue> y, MemberSettings settings) { using (var borrow = HashSetPool <TKey> .Borrow(EqualityComparer <TKey> .Default.Equals, EqualityComparer <TKey> .Default.GetHashCode)) { borrow.Value.UnionWith(x.Keys); borrow.Value.UnionWith(y.Keys); foreach (var key in borrow.Value) { var xv = x.ElementAtOrMissing(key); var yv = y.ElementAtOrMissing(key); collectionBuilder.UpdateCollectionItemDiff(xv, yv, key, settings); } } }