public static void TestOrderedGuidCache_Remove_LeavesMostRecentlyAccessedItems()
        {
            var cache = new OrderedGuidCache();

            var guidRemoved1 = Guid.NewGuid();
            var guidRemoved2 = Guid.NewGuid();
            var guidStays1   = Guid.NewGuid();
            var guidStays2   = Guid.NewGuid();
            var guidStays3   = Guid.NewGuid();

            cache.TryAdd(guidStays1, 2);
            Thread.Sleep(100);
            cache.TryAdd(guidStays2, 2);
            Thread.Sleep(100);
            cache.TryAdd(guidRemoved1, 2);
            Thread.Sleep(100);
            cache.TryAdd(guidRemoved2, 2);
            Thread.Sleep(100);
            cache.TryAdd(guidStays3, 2);
            Thread.Sleep(100);

            // Touch the timestamps
            cache.Contains(guidStays1);
            Thread.Sleep(100);
            cache.Contains(guidStays3);
            Thread.Sleep(100);
            cache.ItemsWithPrefix(guidStays2.ToString("N").Substring(0, 3));
            Thread.Sleep(100);

            cache.Remove(3, out var sizeCleared);

            Assert.True(cache.Contains(guidStays1));
            Assert.True(cache.Contains(guidStays2));
            Assert.True(cache.Contains(guidStays3));
        }
        public static void TestOrderedGuidCache_Contains_DoesntFindUnknown()
        {
            var cache = new OrderedGuidCache();

            cache.TryAdd(Guid.NewGuid(), 0);
            Assert.False(cache.Contains(Guid.NewGuid()));
        }
        public static void TestOrderedGuidCache_Contains_FindsKnown()
        {
            var cache = new OrderedGuidCache();
            var guid  = Guid.NewGuid();

            cache.TryAdd(Guid.NewGuid(), 1);
            cache.TryAdd(guid, 2);
            cache.TryAdd(Guid.NewGuid(), 3);
            Assert.True(cache.Contains(guid));
        }
        public static void TestOrderedGuidCache_Contains_DoesntFindRemovedItem()
        {
            var cache = new OrderedGuidCache();
            var guid  = Guid.NewGuid();

            cache.TryAdd(Guid.NewGuid(), 1);
            cache.TryAdd(guid, 2);
            cache.TryAdd(Guid.NewGuid(), 3);
            cache.TryRemove(guid);
            Assert.False(cache.Contains(guid));
        }
        public static void TestOrderedGuidCache_TryRemove_DoesRemoveKnown()
        {
            var cache = new OrderedGuidCache();
            var guid  = Guid.NewGuid();

            cache.TryAdd(Guid.NewGuid(), 1);
            cache.TryAdd(guid, 2);
            cache.TryAdd(Guid.NewGuid(), 3);
            Assert.True(cache.TryRemove(guid));
            Assert.AreEqual(2, cache.Count);
            Assert.False(cache.Contains(guid));
        }