Exemple #1
0
        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);
            }
        }