public static IEnumerable <InstallItemDiff> GetDiffs(IEnumerable <InstallItem> left, IEnumerable <InstallItem> right) { var leftList = left.Where(i => i.Type != InstallType.Warning).ToArray(); var rightList = right.Where(i => i.Type != InstallType.Warning).ToArray(); var compares = ListCompare.Create(leftList, rightList, i => i.Reference); var results = new List <InstallItemDiff>(); foreach (var compare in compares) { if (compare.Base < 0) { results.Add(new InstallItemDiff() { _itemRef = rightList[compare.Compare].Reference, _type = rightList[compare.Compare].Type, DiffType = DiffType.RightOnly, RightScript = rightList[compare.Compare].Script }); } else if (compare.Compare < 0) { results.Add(new InstallItemDiff() { _itemRef = leftList[compare.Base].Reference, _type = leftList[compare.Base].Type, DiffType = DiffType.LeftOnly, LeftScript = leftList[compare.Base].Script }); } else { results.Add(new InstallItemDiff() { _itemRef = leftList[compare.Base].Reference, _type = leftList[compare.Base].Type, DiffType = (AmlDiff.IsDifferent(new XmlNodeReader(leftList[compare.Base].Script), new XmlNodeReader(rightList[compare.Compare].Script)) ? DiffType.Different : DiffType.Identical), LeftScript = leftList[compare.Base].Script, RightScript = rightList[compare.Compare].Script }); } } return(results); }
public bool Equals(ListCompare c) { return(c._base == this._base && c._compare == this._compare && c._isDifferent == this._isDifferent); }