static void Main() { var crayons = new RankedBag <string> (StringComparer.InvariantCultureIgnoreCase) { "red", "yellow", "black", "BLACK" }; crayons.Add("blue"); Console.WriteLine($"There are {crayons.Count} total crayons:"); foreach (var crayon in crayons) { Console.WriteLine($" {crayon}"); } Console.WriteLine($"\nThere are {crayons.GetDistinctCount()} distinct colors:"); foreach (var crayon in crayons.Distinct()) { Console.WriteLine($" {crayon}"); } Console.WriteLine($"\nGot 'gold' crayon? {crayons.Contains ("gold")}"); // RetainAll respects cardinality so the oldest 'black' is removed: crayons.RetainAll(new string[] { "white", "grey", "Black", "red" }); Console.WriteLine("\nAfter RetainAll: "); foreach (var crayon in crayons) { Console.WriteLine($" {crayon}"); } }
public void UnitRb_RemoveAt() { var rb1 = new RankedBag <int>() { Capacity = 5 }; #if STRESS int n = 500, m = 10; #else int n = 50, m = 5; #endif for (int i1 = 0; i1 < n; ++i1) { rb1.Add(i1); } for (int i2 = n - m; i2 >= 0; i2 -= m) { rb1.RemoveAt(i2); } for (int i3 = 0; i3 < n; ++i3) { if (i3 % m == 0) { Assert.IsFalse(rb1.Contains(i3)); } else { Assert.IsTrue(rb1.Contains(i3)); } } var rb2 = new RankedBag <int> { Capacity = 4 }; for (int ii = 0; ii < 8; ++ii) { rb2.Add(ii); } rb2.RemoveAt(3); Assert.IsTrue(System.Linq.Enumerable.SequenceEqual(new int[] { 0, 1, 2, 4, 5, 6, 7 }, rb2)); }
public void UnitRb_Remove2() { var rb0 = new RankedBag <int>(); var rb1 = new RankedBag <int> { Capacity = 4 }; var rb2 = new RankedBag <int> { Capacity = 4 }; var rb3 = new RankedBag <int> { Capacity = 5 }; foreach (int ii in new int[] { 3, 5, 5, 7, 7, 7, 9 }) { rb1.Add(ii); } foreach (int ii in new int[] { 3, 3, 3, 5, 5, 5, 7, 7, 7, 9 }) { rb2.Add(ii); } for (int ii = 0; ii < 41; ++ii) { rb3.Add(ii / 5); } var rem0 = rb0.Remove(0, 1); Assert.AreEqual(0, rem0); var rem2 = rb1.Remove(2, 2); Assert.AreEqual(0, rem2); var rem70 = rb1.Remove(7, 0); Assert.AreEqual(0, rem70); var rem7 = rb1.Remove(7, 1); Assert.AreEqual(1, rem7); Assert.AreEqual(6, rb1.Count); var rem5 = rb1.Remove(5, 3); Assert.AreEqual(2, rem5); Assert.AreEqual(4, rb1.Count); var rem9 = rb1.Remove(10); Assert.IsFalse(rem9); var rem53 = rb2.Remove(5, 3); Assert.AreEqual(3, rem53); var rem33 = rb2.Remove(3, 3); Assert.AreEqual(3, rem33); var rem99 = rb2.Remove(9, 9); Assert.AreEqual(1, rem99); Assert.AreEqual(3, rb2.Count); var rem35 = rb3.Remove(3, 9); Assert.AreEqual(5, rem35); Assert.AreEqual(36, rb3.Count); Assert.IsFalse(rb3.Contains(3)); var rem65 = rb3.Remove(6, Int32.MaxValue); Assert.AreEqual(5, rem65); Assert.AreEqual(31, rb3.Count); Assert.IsFalse(rb3.Contains(6)); }