예제 #1
0
        public void TestLruSetBoundary()
        {
            var lru = new LruSet <int>();

            Assert.False(lru.IsFull);

            lru.Add(0);
            Assert.False(lru.IsFull);
            Assert.Equal(1, lru.Count);

            Assert.True(lru.Remove(0));
            Assert.Equal(0, lru.Count);
            Assert.False(lru.IsFull);

            lru.Fill(x => x, 100);
            Assert.Equal(100, lru.Count);
            Assert.True(lru.IsFull);

            for (var i = 0; i < 100; i++)
            {
                Assert.True(lru.Remove(i));
                Assert.False(lru.IsFull);
            }

            Assert.Equal(0, lru.Count);
            lru.Add(0);
            Assert.Equal(1, lru.Count);
        }
예제 #2
0
        public void TestLruSetRemove()
        {
            var lru = new LruSet <int>(10000);

            lru.Fill(x => x, 10000);
            lru.Fill(x => x + 10000, 5000);
            Assert.True(lru.IsFull);
            Assert.Equal(lru.MaxSize, lru.Count);

            for (var i = 0; i < 5000; i++)
            {
                Assert.True(lru.Remove(i + 5000));
            }

            for (var i = 0; i < 5000; i++)
            {
                Assert.False(lru.Contains(i));
            }

            Assert.Equal(5000, lru.Count);

            for (var i = 0; i < 5000; i++)
            {
                Assert.False(lru.Remove(i));
            }
        }