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); }
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)); } }