public void ExceptReturnsExpectedValues(int[] first, int[] second) { var nm1 = new NativeMethodsMock { ProcessIds = first }; var pl1 = new ProcessList(nm1); pl1.Refresh(); var nm2 = new NativeMethodsMock { ProcessIds = second }; var pl2 = new ProcessList(nm2); pl2.Refresh(); var expectedAdded = second.Except(first).ToList(); var expectedRemoved = first.Except(second).ToList(); var expectedAll = expectedAdded.Union(expectedRemoved).OrderBy(x => x).ToList(); var diff = pl2.Diff(pl1).ToList(); var added = diff.Where(x => x.Added).Select(x => x.ProcessId).ToList(); var removed = diff.Where(x => !x.Added).Select(x => x.ProcessId).ToList(); var all = diff.Select(x => x.ProcessId).ToList(); Assert.Equal <int>(expectedAll, all); Assert.Equal(expectedAdded, added); Assert.Equal(expectedRemoved, removed); }