private DiffResult GetDiffResult(Difference diff) { DiffResult result = new DiffResult(); if (diff == null) { result.Type = DiffResultType.EntryDoesNotExists; } else if (!diff.DataItems.Any(di => di.Side == DiffItemSide.Left)) { result.Type = DiffResultType.LeftSideMissing; } else if (!diff.DataItems.Any(di => di.Side == DiffItemSide.Right)) { result.Type = DiffResultType.RightSideMissing; } else { byte[] leftItem = Convert.FromBase64String( diff.DataItems.First(di => di.Side == DiffItemSide.Left).Data); byte[] rightItem = Convert.FromBase64String( diff.DataItems.First(di => di.Side == DiffItemSide.Right).Data); if (leftItem.SequenceEqual(rightItem)) { result.Type = DiffResultType.FullMatch; } else if (leftItem.Length == rightItem.Length) { int binaryLength = leftItem.Length * 8; // Gets total count of bits. result.Type = DiffResultType.SizeMatch; result.Diffs = GetDiffInfoCollection( NumericHelper.CreateBigInt(leftItem), NumericHelper.CreateBigInt(rightItem), binaryLength); } else { result.Type = DiffResultType.SizeMismatch; } } return(result); }