public void ItemsDiff(string projectItems, string sdkBaselineItems, string expectedDefaultedItems, string expectedNotDefaultedItems, string expectedIntroducedItems, string expectedChangedItems) { var project = IProjectFactory.Create(GetItems(projectItems)); var sdkBaselineProject = IProjectFactory.Create(GetItems(sdkBaselineItems)); var differ = new Differ(project, sdkBaselineProject); var diffs = differ.GetItemsDiff(); if (expectedDefaultedItems == null) { Assert.All(diffs, diff => Assert.Empty(diff.DefaultedItems)); } else { var expectedDiffItems = GetItems(expectedDefaultedItems); var matchingItems = diffs.Select(diff => (diff.DefaultedItems.Select(i => i.EvaluatedInclude), expectedDiffItems.SingleOrDefault(d => d.ItemType == diff.ItemType).Items)); Assert.All(matchingItems, diff => Assert.Equal(diff.Item1, diff.Items)); } if (expectedNotDefaultedItems == null) { Assert.All(diffs, diff => Assert.Empty(diff.NotDefaultedItems)); } else { var expectedDiffItems = GetItems(expectedNotDefaultedItems); var matchingItems = diffs.Select(diff => (diff.NotDefaultedItems.Select(i => i.EvaluatedInclude), expectedDiffItems.SingleOrDefault(d => d.ItemType == diff.ItemType).Items)); Assert.All(matchingItems, diff => Assert.Equal(diff.Item1, diff.Items)); } if (expectedIntroducedItems == null) { Assert.All(diffs, diff => Assert.Empty(diff.IntroducedItems)); } else { var expectedDiffItems = GetItems(expectedIntroducedItems); var matchingItems = diffs.Select(diff => (diff.IntroducedItems.Select(i => i.EvaluatedInclude), expectedDiffItems.SingleOrDefault(d => d.ItemType == diff.ItemType).Items)); Assert.All(matchingItems, diff => Assert.Equal(diff.Item1, diff.Items)); } if (expectedChangedItems == null) { Assert.All(diffs, diff => Assert.Empty(diff.ChangedItems)); } else { var expectedDiffItems = GetItems(expectedChangedItems); var matchingItems = diffs.Select(diff => (diff.ChangedItems.Select(i => i.EvaluatedInclude), expectedDiffItems.SingleOrDefault(d => d.ItemType == diff.ItemType).Items)); Assert.All(matchingItems, diff => Assert.Equal(diff.Item1, diff.Items)); } }