public void Remove()
        {
            var ld = new RecentDictionary <string, int>();

            for (int i = 0; i < 10; i++)
            {
                ld[i.ToString()] = i;
            }
            Assert.Equal(10, ld.Count);

            // remove evens.
            for (int i = 0; i < 10; i += 2)
            {
                ld.Remove(i.ToString());
            }
            Assert.Equal(5, ld.Count);

            for (int i = 0; i < 10; i++)
            {
                bool found = ld.TryGetValue(i.ToString(), out int ret);
                if (i % 2 == 0)
                {
                    Assert.False(found);
                }
                else
                {
                    Assert.True(found);
                    Assert.Equal(i, ret);
                }
            }
        }
        public void RemoveAndResize()
        {
            var ld = new RecentDictionary <string, int>();

            // Add first 500.
            for (int i = 0; i < 500; i++)
            {
                ld.Add(i.ToString(), i);
            }

            // remove everything divisible by 7
            for (int i = 0; i < 500; i += 7)
            {
                bool removed = ld.Remove(i.ToString());
                Assert.True(removed);
            }

            // Add 2000 more elements to force resizing.
            for (int i = 500; i < 2500; i++)
            {
                ld.Add(i.ToString(), i);
            }

            for (int i = 0; i < 2500; i++)
            {
                bool found = ld.TryGetValue(i.ToString(), out int ret);
                if ((i < 500) && (i % 7 == 0))
                {
                    Assert.False(found);
                }
                else
                {
                    Assert.True(found);
                    Assert.Equal(i, ret);
                }
            }
        }