Exemplo n.º 1
0
        private void StrictSetCompliment <S1, S2>() where S1 : IStrictSet <int>, new() where S2 : IStrictSet <int>, new()
        {
            var s1 = new S1();
            var s2 = new S2();

            Fill(s1, 0, 1000);
            Fill(s2, 0, 2000);
            var result = s1.Compliment(s2);

            for (var i = 0; i < 1000; i++)
            {
                Assert.False(s1.Contains(i));
                Assert.False(result.Contains(i));
            }
            for (var i = 1000; i < 2000; i++)
            {
                Assert.True(s1.Contains(i));
                Assert.True(result.Contains(i));
            }

            var s3 = new S1();
            var s4 = new S2();

            Fill(s4, 0, 1000);
            var result2 = s3.Compliment(s4);

            Assert.True(s3.IsEqualWith(s4));
            Assert.True(result2.IsEqualWith(s4));
            for (var i = 0; i < 1000; i++)
            {
                Assert.True(s3.Contains(i));
                Assert.True(result2.Contains(i));
            }

            var s5 = new S1();
            var s6 = new S2();

            Fill(s5, 0, 1000);
            Fill(s6, 500, 1000);
            Assert.Throws(typeof(InvalidOperationException), () => s5.Compliment(s6));

            var s7      = new S1();
            var s8      = new S2();
            var result3 = s7.Compliment(s8);

            Assert.True(s7.IsEqualWith(new S1()));
            Assert.True(s7.IsEqualWith(new S2()));
            Assert.True(result3.IsEqualWith(new S1()));
            Assert.True(result3.IsEqualWith(new S2()));
        }
Exemplo n.º 2
0
        private void StrictSetIntersect <S1, S2>() where S1 : IStrictSet <int>, new() where S2 : IStrictSet <int>, new()
        {
            var origin = new S1();
            var other  = new S2();

            Fill(origin, 0, 5000);
            Fill(other, 4000, 5000);
            var result = origin.Intersect(other);

            Assert.Equal(1000, origin.Count);
            Assert.Equal(1000, result.Count);
            for (var i = 0; i < 4000; i++)
            {
                Assert.False(origin.Contains(i));
                Assert.False(result.Contains(i));
            }

            for (var i = 4000; i < 5000; i++)
            {
                Assert.True(origin.Contains(i));
                Assert.True(result.Contains(i));
            }

            for (var i = 5000; i < 9000; i++)
            {
                Assert.False(origin.Contains(i));
                Assert.False(result.Contains(i));
            }

            var third = new S1();

            foreach (var i in Enumerable.Range(5000, 1000))
            {
                third.Add(i);
            }

            origin.Intersect(third);

            Assert.Equal(0, origin.Count);
        }
Exemplo n.º 3
0
        private void StrictSetDiffer <S1, S2>()
            where S1 : IStrictSet <int>, new()
            where S2 : IStrictSet <int>, new()
        {
            var origin = new S1();
            var other  = new S2();

            Fill(origin, 0, 5000);
            Fill(other, 4000, 5000);
            var result = origin.Differ(other);

            for (var i = 0; i < 4000; i++)
            {
                Assert.True(origin.Contains(i));
                Assert.True(result.Contains(i));
            }
            for (var i = 4000; i < 5000; i++)
            {
                Assert.False(origin.Contains(i));
                Assert.False(result.Contains(i));
            }
        }
Exemplo n.º 4
0
        private void StrictSetUnion <S1, S2>()
            where S1 : IStrictSet <int>, new()
            where S2 : IStrictSet <int>, new()
        {
            var origin = new S1();
            var other  = new S2();

            Fill(origin, 0, 5000);
            Fill(other, 4000, 5000);
            var result = origin.Union(other);

            Assert.Equal(9000, origin.Count);
            Assert.Equal(9000, result.Count);
            for (var i = 0; i < 9000; i++)
            {
                Assert.True(origin.Contains(i));
                Assert.True(result.Contains(i));
            }
        }