private void Do(int C, int P, int M, bool noisy, bool useRAII, Func <Stack <int>, int> test) { var pool = StackPool <int> .Create(C); void testCore(Stack <int> stack) { var len = stack.Count; Assert.AreEqual(0, len); var L = test(stack); len = stack.Count; Assert.AreEqual(L, len); } if (useRAII) { Run(() => pool.New(), o => o.Stack, o => o.Dispose(), testCore, P, M, noisy); } else { Run(() => pool.Allocate(), o => o, o => pool.Free(o), testCore, P, M, noisy); } }
public void PooledStack_GottenTooBig() { var bigPool = StackPool <int> .Create(1, 16, 2048); var smallPool = StackPool <int> .Create(1, 16, 16); TooBig(() => PooledStack <int> .New(), h => h.Stack, (h, n) => { for (var i = 0; i < n; i++) { h.Push(i); } }, 1024); TooBig(() => bigPool.New(), h => h.Stack, (h, n) => { for (var i = 0; i < n; i++) { h.Push(i); } }, 2048); TooBig(() => smallPool.New(), h => h.Stack, (h, n) => { for (var i = 0; i < n; i++) { h.Push(i); } }, 16); }
public void PooledStack_ArgumentChecking() { Assert.ThrowsException <ArgumentOutOfRangeException>(() => StackPool <int> .Create(4, -1)); Assert.ThrowsException <ArgumentOutOfRangeException>(() => StackPool <int> .Create(4, 16, -1)); }
public void PooledStack_Simple2() { var pool = StackPool <string> .Create(4, 16); PooledStack_Simple_Impl(pool); }