public void CopyToTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(10);

            // Fill set
            for (int i = 10; i >= 0; i--)
            {
                UnsafeSortedSet.Add(set, i);
            }

            var  count = UnsafeSortedSet.GetCount(set);
            int *arr   = stackalloc int[count];

            UnsafeSortedSet.CopyTo <int>(set, arr, 0);

            // Check
            int num = 0;

            for (int i = 0; i < count; i++)
            {
                Assert.AreEqual(i, arr[num++]);
            }

            UnsafeSortedSet.Free(set);
        }
        public void AddRandomTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(10);

            Random r = new Random();

            for (int i = 0; i < 10; i++)
            {
                UnsafeSortedSet.Add <int>(set, r.Next());
            }

            int *arr = stackalloc int[10];

            UnsafeSortedSet.CopyTo <int>(set, arr, 0);

            // Validate values are from low to high
            int last = arr[0];

            for (int i = 1; i < 10; i++)
            {
                Assert.IsTrue(last <= arr[i]);
                last = arr[i++];
            }

            UnsafeSortedSet.Free(set);
        }
        public void InvalidTypeTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(10);

            Assert.Catch <AssertException>(() => { UnsafeSortedSet.Add <float>(set, 4); });

            UnsafeSortedSet.Free(set);
        }
        public void ClearTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(16, fixedSize: false);

            // Add some random data
            Random r = new Random();

            for (int i = 0; i < 10; i++)
            {
                UnsafeSortedSet.Add <int>(set, r.Next());
            }

            // Verify data has been added
            Assert.AreEqual(10, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(16, UnsafeSortedSet.GetCapacity(set));

            // Clear set and verify it's cleared
            UnsafeSortedSet.Clear(set);

            Assert.AreEqual(0, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(16, UnsafeSortedSet.GetCapacity(set));


            // Validate we can still add data and have it be valid
            // Add data to cleared set
            for (int i = 10; i >= 0; i--)
            {
                UnsafeSortedSet.Add(set, i);
            }

            var  count = UnsafeSortedSet.GetCount(set);
            int *arr   = stackalloc int[count];

            UnsafeSortedSet.CopyTo <int>(set, arr, 0);

            // Validate data has been written
            int num = 0;

            for (int i = 0; i < count; i++)
            {
                Assert.AreEqual(i, arr[num++]);
            }

            Assert.AreEqual(count, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(16, UnsafeSortedSet.GetCapacity(set));

            UnsafeSortedSet.Free(set);
        }
        public void ExpandTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(8, fixedSize: false);

            // Valid adds
            for (int i = 0; i < 8; i++)
            {
                UnsafeSortedSet.Add(set, i + 1);
            }

            Assert.AreEqual(8, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(8, UnsafeSortedSet.GetCapacity(set));

            UnsafeSortedSet.Add(set, 42);

            Assert.AreEqual(9, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(16, UnsafeSortedSet.GetCapacity(set));

            UnsafeSortedSet.Free(set);
        }
        public void ExpandFailedTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(8, true);

            // Valid adds
            for (int i = 0; i < 8; i++)
            {
                UnsafeSortedSet.Add(set, i + 1);
            }

            Assert.AreEqual(8, UnsafeSortedSet.GetCount(set));
            Assert.AreEqual(8, UnsafeSortedSet.GetCapacity(set));

            Assert.Throws <InvalidOperationException>(() =>
            {
                UnsafeSortedSet.Add(set, 42);
            });

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

            // Fill set
            for (int i = 10; i >= 0; i--)
            {
                // Add in reverse order
                UnsafeSortedSet.Add(set, i);
            }

            var enumerator = UnsafeSortedSet.GetEnumerator <int>(set);

            for (int i = 0; i < 10; i++)
            {
                enumerator.MoveNext();
                Assert.AreEqual(i, enumerator.Current);
            }

            UnsafeSortedSet.Free(set);
        }
        public void RemoveTest()
        {
            var set = UnsafeSortedSet.Allocate <int>(10);

            Assert.IsFalse(UnsafeSortedSet.Remove <int>(set, 1));

            UnsafeSortedSet.Add(set, 1);
            UnsafeSortedSet.Add(set, 7);
            UnsafeSortedSet.Add(set, 51);
            UnsafeSortedSet.Add(set, 13);

            Assert.IsFalse(UnsafeSortedSet.Remove <int>(set, 3));

            Assert.IsTrue(UnsafeSortedSet.Remove <int>(set, 1));
            Assert.IsTrue(UnsafeSortedSet.Remove <int>(set, 7));
            Assert.IsTrue(UnsafeSortedSet.Remove <int>(set, 13));
            Assert.IsTrue(UnsafeSortedSet.Remove <int>(set, 51));

            Assert.IsFalse(UnsafeSortedSet.Remove <int>(set, 13));

            UnsafeSortedSet.Free(set);
        }
Example #9
0
 public void Add(T item)
 {
     UnsafeSortedSet.Add <T>(m_inner, item);
 }