public void InvalidTypeTest()
        {
            var arr = UnsafeStack.Allocate <int>(10);

            Assert.Catch <AssertException>(() => { UnsafeStack.Push <float>(arr, 20); });

            UnsafeStack.Free(arr);
        }
        public void ConstructorTest()
        {
            var arr = UnsafeStack.Allocate <int>(10);

            Assert.AreEqual(UnsafeStack.GetCount(arr), 0);

            UnsafeStack.Free(arr);
        }
        public void ExpandTest()
        {
            var arr = UnsafeStack.Allocate <int>(8);

            for (int i = 0; i < 10; i++)
            {
                UnsafeStack.Push(arr, i);
            }

            Assert.IsTrue(UnsafeStack.GetCapacity(arr) > 8);

            UnsafeStack.Free(arr);
        }
        public void MutateTest()
        {
            var arr = UnsafeStack.Allocate <int>(10);

            for (int i = 0; i < 10; i++)
            {
                UnsafeStack.Push(arr, i);
            }

            for (int i = 9; i >= 0; i--)
            {
                Assert.AreEqual(i, UnsafeStack.Pop <int>(arr));
            }

            UnsafeStack.Free(arr);
        }
        public void IteratorTest()
        {
            var arr = UnsafeStack.Allocate <int>(10);

            for (int i = 0; i < 10; i++)
            {
                UnsafeStack.Push(arr, i);
            }

            Assert.AreEqual(10, UnsafeStack.GetCount(arr));

            int num = 9;

            foreach (int i in UnsafeStack.GetEnumerator <int>(arr))
            {
                Assert.AreEqual(num--, i);
            }

            UnsafeStack.Free(arr);
        }