コード例 #1
0
        public void Subset()
        {
            var set1 = new Bag <int>(new int[] { 1, 1, 3, 6, 6, 6, 6, 7, 8, 9, 9 });
            var set2 = new Bag <int>();
            var set3 = new Bag <int>(new int[] { 1, 6, 6, 9, 9 });
            var set4 = new Bag <int>(new int[] { 1, 6, 6, 9, 9 });
            var set5 = new Bag <int>(new int[] { 1, 1, 3, 6, 6, 6, 7, 7, 8, 9, 9 });

            Assert.IsTrue(set1.IsSupersetOf(set2));
            Assert.IsTrue(set2.IsSubsetOf(set1));
            Assert.IsTrue(set1.IsProperSupersetOf(set2));
            Assert.IsTrue(set2.IsProperSubsetOf(set1));

            Assert.IsTrue(set1.IsSupersetOf(set3));
            Assert.IsTrue(set3.IsSubsetOf(set1));
            Assert.IsTrue(set1.IsProperSupersetOf(set3));
            Assert.IsTrue(set3.IsProperSubsetOf(set1));

            Assert.IsFalse(set3.IsSupersetOf(set1));
            Assert.IsFalse(set1.IsSubsetOf(set3));
            Assert.IsFalse(set3.IsProperSupersetOf(set1));
            Assert.IsFalse(set1.IsProperSubsetOf(set3));

            Assert.IsFalse(set1.IsSupersetOf(set5));
            Assert.IsFalse(set5.IsSupersetOf(set1));
            Assert.IsFalse(set1.IsSubsetOf(set5));
            Assert.IsFalse(set5.IsSubsetOf(set1));
            Assert.IsFalse(set1.IsProperSupersetOf(set5));
            Assert.IsFalse(set5.IsProperSupersetOf(set1));
            Assert.IsFalse(set1.IsProperSubsetOf(set5));
            Assert.IsFalse(set5.IsProperSubsetOf(set1));

            Assert.IsTrue(set3.IsSupersetOf(set4));
            Assert.IsTrue(set3.IsSubsetOf(set4));
            Assert.IsFalse(set3.IsProperSupersetOf(set4));
            Assert.IsFalse(set3.IsProperSubsetOf(set4));

            Assert.IsTrue(set1.IsSupersetOf(set1));
            Assert.IsTrue(set1.IsSubsetOf(set1));
            Assert.IsFalse(set1.IsProperSupersetOf(set1));
            Assert.IsFalse(set1.IsProperSubsetOf(set1));
        }
コード例 #2
0
 /// <summary>
 /// Determines if this bag is a proper subset of another bag. Neither bag is modified.
 /// This bag is a subset of <paramref name="otherBag"/> if every element in this bag
 /// is also in <paramref name="otherBag"/>, at least the same number of
 /// times. Additional, this bag must have strictly fewer items than <paramref name="otherBag"/>.
 /// </summary>
 /// <remarks>IsProperSubsetOf is computed in time O(N), where N is the number of unique items in this bag.</remarks>
 /// <param name="otherBag">Bag to compare to.</param>
 /// <returns>True if this is a proper subset of <paramref name="otherBag"/>.</returns>
 /// <exception cref="InvalidOperationException">This bag and <paramref name="otherBag"/> don't use the same method for comparing items.</exception>
 public bool IsProperSubsetOf(Bag <T> otherBag)
 {
     return(otherBag.IsProperSupersetOf(this));
 }