public void GrabHandleFromEmptyCache() { using (SafeHeapHandleCache cache = new SafeHeapHandleCache(minSize: 5, maxSize: 100, maxHandles: 2)) { var handle = cache.Acquire(); Assert.NotNull(handle); Assert.Equal((ulong)5, handle.ByteLength); } }
public void LatestPopped() { using (SafeHeapHandleCache cache = new SafeHeapHandleCache(minSize: 5, maxSize: 100, maxHandles: 2)) { var first = cache.Acquire(); var second = cache.Acquire(); cache.Release(first); cache.Release(second); Assert.Same(second, cache.Acquire()); Assert.Same(first, cache.Acquire()); } }
public void CachedCountTest(int maxCount, int itemsToCache, int expected) { using (SafeHeapHandleCache cache = new SafeHeapHandleCache(minSize: 5, maxSize: 100, maxHandles: maxCount)) { for (int i = 0; i < itemsToCache; i++) { cache.Release(new SafeHeapHandle(10)); } int count = cache._handleCache.Count(h => h != null); Assert.Equal(expected, count); } }
public void OldestPushedOff() { using (SafeHeapHandleCache cache = new SafeHeapHandleCache(minSize: 5, maxSize: 100, maxHandles: 2)) { var first = cache.Acquire(); var second = cache.Acquire(); var third = cache.Acquire(); cache.Release(first); cache.Release(second); cache.Release(third); Assert.True(first.IsClosed); Assert.False(second.IsClosed); Assert.False(third.IsClosed); } }
static NativeBuffer() { s_emptyHandle = new EmptySafeHandle(); s_handleCache = new SafeHeapHandleCache(); }