public DirectoryComparisonDifference Compare() { DirectoryComparisonDifference comparisonResult = new DirectoryComparisonDifference(); if (!BaselineDifference.IsValidBaseline) { comparisonResult.InvalidBaselineData = true; return(comparisonResult); } if (!CheckDifference.IsValidBaseline) { comparisonResult.InvalidSecondaryData = true; return(comparisonResult); } IReadOnlyDictionary <string, FileDifference> checkFileLookup = CheckDifference.FileResults.ToDictionary(x => x.File, x => x); foreach (FileDifference baselineFileDiff in BaselineDifference.FileResults) { if (!checkFileLookup.TryGetValue(baselineFileDiff.File, out FileDifference checkFileDiff)) { FileComparisonDifference fileResult = new FileComparisonDifference(baselineFileDiff.File); fileResult.MissingSecondaryFile = true; comparisonResult.AddFileResult(fileResult); } else { FileDifferenceComparer comparer = new FileDifferenceComparer(baselineFileDiff, checkFileDiff); FileComparisonDifference fileResult = comparer.Compare(); comparisonResult.AddFileResult(fileResult); } } // check for files in the check result but not the baseline. HashSet <string> baselineFileLookup = new HashSet <string>(BaselineDifference.FileResults.Select(x => x.File)); foreach (FileDifference checkFileDifference in CheckDifference.FileResults) { if (!baselineFileLookup.Contains(checkFileDifference.File)) { FileComparisonDifference fileResult = new FileComparisonDifference(checkFileDifference.File); fileResult.MissingBaselineFile = true; comparisonResult.AddFileResult(fileResult); } } return(comparisonResult); }
public static StructuredDirectoryComparisonDifference FromDirectoryComparisonDifference(DirectoryComparisonDifference difference) { StructuredDirectoryComparisonDifference structuredDifference = new StructuredDirectoryComparisonDifference() { InvalidBaselineData = difference.InvalidBaselineData, InvalidSecondaryData = difference.InvalidSecondaryData, FileResults = difference.FileResults.Select(x => StructuredFileComparisonDifference.FromFileComparisonDifference(x)).ToList() }; return(structuredDifference); }