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)); }
/// <summary> /// Determines if this bag is a subset of another ba11 items in this bag. /// </summary> /// <param name="otherBag">Bag to compare to.</param> /// <returns>True if this is a 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 IsSubsetOf(Bag <T> otherBag) { return(otherBag.IsSupersetOf(this)); }