public void TestLruMapHit() { var lru = new LruMap <int, int>(10000); var map = new HashedMap <int, int>(10000); for (var i = 0; i < 10000; i++) { lru.Add(i, i); map.Add(i, i); } foreach (var item in lru) { Assert.True(map.ContainsKey(item.Key)); } for (var i = 0; i < 10000; i++) { lru[10000 - 1 - i] = 10000 - 1 - i; } foreach (var item in lru) { Assert.True(map.ContainsKey(item.Key)); } for (var i = 0; i < 5000; i++) { lru.Add(i + 10000, i + 10000); } for (var i = 0; i < 5000; i++) { Assert.False(lru.ContainsKey(i + 5000)); } }
private void LruConstructor(LruMap <Order, Bill> lru) { for (var i = 0; i < 10000; i++) { Assert.False(lru.IsFull); lru.Add(new Order { Id = i }, new Bill()); } Assert.Equal(10000, lru.Count); Assert.True(lru.IsFull); for (var i = 10000; i < 20000; i++) { lru.Add(new Order { Id = i }, new Bill()); } Assert.Equal(10000, lru.Count); Assert.True(lru.IsFull); for (var i = 0; i < 10000; i++) { Assert.False(lru.ContainsKey(new Order { Id = i })); } for (var i = 10000; i < 20000; i++) { Assert.True(lru.ContainsKey(new Order { Id = i })); } }
public void TestLruMapConstructor() { var lru = new LruMap <int, int>(); for (var i = 0; i < 100; i++) { Assert.False(lru.IsFull); lru.Add(i, i); } Assert.Equal(100, lru.Count); Assert.True(lru.IsFull); for (var i = 100; i < 200; i++) { lru.Add(i, i); } Assert.Equal(100, lru.Count); Assert.True(lru.IsFull); for (var i = 0; i < 100; i++) { Assert.False(lru.ContainsKey(i)); } for (var i = 100; i < 200; i++) { Assert.True(lru.ContainsKey(i)); } var lru2 = new LruMap <int, int>(10000); for (var i = 0; i < 10000; i++) { Assert.False(lru2.IsFull); lru2.Add(i, i); } Assert.Equal(10000, lru2.Count); Assert.True(lru2.IsFull); for (var i = 10000; i < 20000; i++) { lru2.Add(i, i); } Assert.Equal(10000, lru2.Count); Assert.True(lru2.IsFull); for (var i = 0; i < 10000; i++) { Assert.False(lru2.ContainsKey(i)); } for (var i = 10000; i < 20000; i++) { Assert.True(lru2.ContainsKey(i)); } var lru3 = new LruMap <Order, Bill>(10000, (x1, x2) => x1.Id == x2.Id); LruConstructor(lru3); var lru4 = new LruMap <Order, Bill>(10000, new OrderEqualityComparer()); LruConstructor(lru4); }
public void TestLruMapCollectionOperations() { var lru = new LruMap <int, Order>(1000); lru.Fill(x => new KeyValuePair <int, Order>(x, new Order { Id = x })); lru.CollectionOperations <KeyValuePair <int, Order> >(1000); }
public void TestLruMapDictionaryOperations() { var map = new LruMap <Order, Bill>(2000, new OrderEqualityComparer()); map.DictionaryOperations(x => new Order { Id = x }, y => new Bill { Id = y }, new BillEqualityComparer().Equals); }
public void TestLruMapAccessHeader() { var lru = new LruMap <int, int>(10000); for (var i = 0; i < 10000; i++) { lru.Add(i, i); } lru[9999] = 9999; for (var i = 0; i < 9999; i++) { lru.Add(i + 10000, i + 10000); } for (var i = 0; i < 9999; i++) { Assert.False(lru.ContainsKey(i)); } for (var i = 0; i < 10000; i++) { Assert.True(lru.ContainsKey(i + 9999)); } }
public void TestLruMapEliminate() { var lru = new LruMap <int, int>(10000); for (var i = 0; i < 10000; i++) { lru.Add(i, i); } Assert.Equal(0, lru[0]); lru.Add(10000, 10000); Assert.True(lru.ContainsKey(0)); Assert.False(lru.ContainsKey(1)); lru[2] = 3; lru.Add(10001, 10001); Assert.False(lru.ContainsKey(3)); Assert.Equal(3, lru[2]); Assert.Equal(10000, lru.Count); Assert.True(lru.ContainsKey(0)); Assert.True(lru.ContainsKey(4)); Assert.Throws(typeof(ArgumentException), () => lru[1]); Assert.Throws(typeof(ArgumentException), () => lru[3]); }
public LruSet(int fullSize, Equator <T> equator) { map = new LruMap <T, object>(fullSize, equator); }
public LruSet(int fullSize, IEqualityComparer <T> comparer) { map = new LruMap <T, object>(fullSize, comparer); }
public LruSet(int fullSize) { map = new LruMap <T, object>(fullSize); }
public LruSet() { map = new LruMap <T, object>(); }