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}");
            }
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }