示例#1
0
        public void RandomTests()
        {
            int seed = Environment.TickCount;

            for (int test = 0; test < 100; test++)
            {
                var    r = new Random(seed + test);
                IntSet a = RandomIntSet(r), b = RandomIntSet(r);
                IsFalse(a.IsEmptySet);
                IsFalse(b.IsEmptySet);
                var union = a.Union(b);
                var intsc = a.Intersection(b);
                var dif   = a.Subtract(b);
                AreEqual(union.Equals(intsc), a.Equals(b));

                for (int i = -10; i < 20; i++)
                {
                    bool ina = a.Contains(i), inb = b.Contains(i);
                    AreEqual(ina || inb, union.Contains(i));
                    AreEqual(ina && inb, intsc.Contains(i));
                    AreEqual(ina && !inb, dif.Contains(i));
                }

                var eInv = a.EquivalentInverted();
                IsTrue(a.Equals(eInv, IntSet.S_Equivalent));
                IsFalse(a.Equals(eInv, IntSet.S_Identical));
                IsFalse(a.Equals(eInv, IntSet.S_SameRangeList));

                var inv = eInv.Clone();
                inv = inv.Inverted();
                IsFalse(inv.Equals(eInv));
                IsTrue(inv.Equals(eInv, IntSet.S_SameRangeList));

                IntSet all = a.Union(inv), none = a.Intersection(inv);
                IsFalse(all.IsEmptySet);
                IsTrue(none.IsEmptySet);
                IsFalse(all.Equals(none));
                AreEqual(all.IsInverted ? 0 : 1, all.Count);
                AreEqual(none.IsInverted ? 1 : 0, none.Count);
                AreEqual(all, all.Union(none));
                AreEqual(all, all.Union(a));
                AreEqual(none, all.Intersection(none));
                AreEqual(a, all.Intersection(a));
                AreEqual(a, a.Subtract(none));

                all = all.Inverted();
                IsTrue(all.Equals(none));
            }
        }
示例#2
0
        public void Regressions()
        {
            IntSet a = IntSet.Parse("[^ \t\r\n\\\\]"), b = IntSet.Parse("[ \t]");

            AreEqual(IntSet.Parse("[^\r\n\\\\]"), b.Union(a));
            AreEqual(IntSet.Parse("[^\r\n\\\\]"), a.Union(b));             // a bug here produced [^]
        }