示例#1
0
        public virtual void DifferenceTest()
        {
            int[]   set1     = { 1, 2, 3, 7 };
            IBitset testSet1 = CreateSetFromIndices(set1, 8);

            int[]   set2     = { 1, 4, 7 };
            IBitset testSet2 = CreateSetFromIndices(set2, 8);

            // These sparse sets will all use array containers.
            IBitset arrayContainerDiffSet = testSet1.Difference(testSet2);

            Assert.AreEqual(false, arrayContainerDiffSet.Get(1));
            Assert.AreEqual(true, arrayContainerDiffSet.Get(3));

            // Test difference from large contiguous bitset to exercise bitsetcontainers.
            int[]   set3     = SetGenerator.GetContiguousArray(0, 5000);
            IBitset testSet3 = CreateSetFromIndices(set3, 5000);

            int[]   setExceptions = { 4 };
            int[]   set4          = SetGenerator.GetContiguousArrayWithExceptions(0, 5000, setExceptions);
            IBitset testSet4      = CreateSetFromIndices(set4, 5000);

            // Both sets are using bitset containers
            IBitset bitsetContainerDiffSet = testSet3.Difference(testSet4);

            Assert.AreEqual(false, bitsetContainerDiffSet.Get(1));
            Assert.AreEqual(true, bitsetContainerDiffSet.Get(4));

            // Diff sets using bitset containers with array containers and vice versa
            IBitset mixedDiffSet1 = testSet4.Difference(testSet2);
            IBitset mixedDiffSet2 = testSet2.Difference(testSet4);

            Assert.AreEqual(false, mixedDiffSet1.Get(1));
            Assert.AreEqual(true, mixedDiffSet1.Get(3));

            Assert.AreEqual(false, mixedDiffSet2.Get(1));
            Assert.AreEqual(true, mixedDiffSet2.Get(4));
        }