public void Set_PredicateSplit() { IAnalysisSet trueSet, falseSet; Assert.IsTrue(nsA1.Split(v => v.Name == "A", out trueSet, out falseSet)); Assert.AreSame(nsA1, trueSet); Assert.AreEqual(0, falseSet.Count); Assert.IsFalse(nsA1.Split(v => v.Name != "A", out trueSet, out falseSet)); Assert.AreEqual(0, trueSet.Count); Assert.AreSame(nsA1, falseSet); foreach (var cmp in new IEqualityComparer <AnalysisValue>[] { ObjectComparer.Instance, UnionComparer.Instances[0] }) { var set = AnalysisSet.Create(new[] { nsA1, nsB1, nsC1 }, cmp); Assert.IsTrue(set.Split(v => v.Name == "A", out trueSet, out falseSet)); Assert.AreEqual(1, trueSet.Count); Assert.AreEqual(set.Count - 1, falseSet.Count); Assert.AreSame(set.Comparer, trueSet.Comparer); Assert.AreSame(set.Comparer, falseSet.Comparer); Assert.IsFalse(set.Split(v => v.Name == "X", out trueSet, out falseSet)); Assert.AreEqual(0, trueSet.Count); Assert.AreEqual(set.Count, falseSet.Count); Assert.AreSame(set.Comparer, trueSet.Comparer); Assert.AreSame(set.Comparer, falseSet.Comparer); Assert.IsTrue(set.Split(v => v.Name != null, out trueSet, out falseSet)); Assert.AreEqual(set.Count, trueSet.Count); Assert.AreEqual(0, falseSet.Count); Assert.AreSame(set.Comparer, trueSet.Comparer); Assert.AreSame(set.Comparer, falseSet.Comparer); } }
public void Set_PredicateSplit() { nsA1.Split(v => v.Name == "A", out var trueSet, out var falseSet).Should().BeTrue(); trueSet.Should().BeSameAs(nsA1); falseSet.Should().BeEmpty(); nsA1.Split(v => v.Name != "A", out trueSet, out falseSet).Should().BeFalse(); trueSet.Should().BeEmpty(); falseSet.Should().BeSameAs(nsA1); foreach (var cmp in new IEqualityComparer <AnalysisValue>[] { ObjectComparer.Instance, UnionComparer.Instances[0] }) { var set = AnalysisSet.Create(new[] { nsA1, nsB1, nsC1 }, cmp); set.Split(v => v.Name == "A", out trueSet, out falseSet).Should().BeTrue(); trueSet.Should().ContainSingle(); falseSet.Should().HaveCount(set.Count - 1); trueSet.Comparer.Should().BeSameAs(set.Comparer); falseSet.Comparer.Should().BeSameAs(set.Comparer); set.Split(v => v.Name == "X", out trueSet, out falseSet).Should().BeFalse(); trueSet.Should().BeEmpty(); falseSet.Should().HaveCount(set.Count); trueSet.Comparer.Should().BeSameAs(set.Comparer); falseSet.Comparer.Should().BeSameAs(set.Comparer); set.Split(v => v.Name != null, out trueSet, out falseSet).Should().BeTrue(); trueSet.Should().HaveCount(set.Count); falseSet.Should().BeEmpty(); trueSet.Comparer.Should().BeSameAs(set.Comparer); falseSet.Comparer.Should().BeSameAs(set.Comparer); } }