Exemple #1
0
        public void AddAfterTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 1);
            UnsafeLinkedList.AddLast(llist, 3);
            UnsafeLinkedList.AddLast(llist, 5);

            // Add a node after 1 and 3 so we have a 1 - 5 sequence
            var node = UnsafeLinkedList.FindNode(llist, 1);

            UnsafeLinkedList.AddAfter(llist, node, 2);

            node = UnsafeLinkedList.FindNode(llist, 3);
            UnsafeLinkedList.AddAfter(llist, node, 4);

            Assert.AreEqual(5, UnsafeLinkedList.GetCount(llist));

            var enumerator = UnsafeLinkedList.GetEnumerator <int>(llist);

            enumerator.MoveNext();

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

            UnsafeLinkedList.Free(llist);
        }
Exemple #2
0
 private void FillList(UnsafeLinkedList *llist)
 {
     for (int i = 0; i < 10; i++)
     {
         UnsafeLinkedList.AddLast <int>(llist, i);
     }
 }
Exemple #3
0
        public void GetLastTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            Assert.AreEqual(9, UnsafeLinkedList.GetLast <int>(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #4
0
        public void AddLastTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 3);
            UnsafeLinkedList.AddLast(llist, 9);
            UnsafeLinkedList.AddLast(llist, 0);

            Assert.AreEqual(3, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #5
0
        public void ContainsTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            // Fill list adds numbers 0-9.
            Assert.IsTrue(UnsafeLinkedList.Contains(llist, 5));
            Assert.IsTrue(UnsafeLinkedList.Contains(llist, 0));
            Assert.IsFalse(UnsafeLinkedList.Contains(llist, 10));

            UnsafeLinkedList.Free(llist);
        }
Exemple #6
0
        public void ClearTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            Assert.AreEqual(10, UnsafeLinkedList.GetCount(llist));
            UnsafeLinkedList.Clear(llist);
            Assert.AreEqual(0, UnsafeLinkedList.GetCount(llist));


            UnsafeLinkedList.Free(llist);
        }
Exemple #7
0
        public void RemoveToHead()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            for (int i = 9; i >= 0; i--)
            {
                Assert.AreEqual(i, UnsafeLinkedList.GetLast <int>(llist));
                Assert.AreEqual(i + 1, UnsafeLinkedList.GetCount(llist));
                UnsafeLinkedList.RemoveLast(llist);
            }

            Assert.AreEqual(0, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #8
0
        public void IteratorTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            var enumerator = UnsafeLinkedList.GetEnumerator <int>(llist);

            var index = 0;

            while (enumerator.MoveNext())
            {
                Assert.AreEqual(index++, enumerator.Current);
            }

            UnsafeLinkedList.Free(llist);
        }
Exemple #9
0
        public void RemoveToTail()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            for (int i = 0; i < 10; i++)
            {
                Assert.AreEqual(i, UnsafeLinkedList.GetFirst <int>(llist));
                Assert.AreEqual(10 - i, UnsafeLinkedList.GetCount(llist));
                UnsafeLinkedList.RemoveFirst(llist);
            }

            Assert.AreEqual(0, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #10
0
        public void CopyToTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            FillList(llist);

            var arr = stackalloc int[10];

            UnsafeLinkedList.CopyTo <int>(llist, arr, 0);

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

            UnsafeLinkedList.Free(llist);
        }
Exemple #11
0
        public void FindNodeTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 1);
            UnsafeLinkedList.AddLast(llist, 2);
            UnsafeLinkedList.AddLast(llist, 3);

            var node = UnsafeLinkedList.FindNode(llist, 2);

            Assert.AreEqual(2, UnsafeLinkedList.Node.GetItem <int>(node));

            node = UnsafeLinkedList.FindNode(llist, 5);
            Assert.IsTrue(node == null);

            UnsafeLinkedList.Free(llist);
        }
Exemple #12
0
        public void AddMixedTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 3);
            UnsafeLinkedList.AddFirst(llist, 2);
            UnsafeLinkedList.AddLast(llist, 4);
            UnsafeLinkedList.AddLast(llist, 5);
            UnsafeLinkedList.AddFirst(llist, 1);

            var index = 0;

            foreach (int num in UnsafeLinkedList.GetEnumerator <int>(llist))
            {
                Assert.AreEqual(++index, num);
            }

            Assert.AreEqual(5, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #13
0
        public void RemoveNodeTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 1);
            UnsafeLinkedList.AddLast(llist, 2);
            UnsafeLinkedList.AddLast(llist, 3);

            // First grab the node
            var node = UnsafeLinkedList.FindNode <int>(llist, 3);

            // Remove the node
            var result = UnsafeLinkedList.Remove(llist, ref node);

            Assert.IsTrue(result);
            Assert.IsTrue(node == null);

            Assert.AreEqual(2, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Free(llist);
        }
Exemple #14
0
        public void RemoveItemTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.AddLast(llist, 1);
            UnsafeLinkedList.AddLast(llist, 2);
            UnsafeLinkedList.AddLast(llist, 3);

            Assert.AreEqual(3, UnsafeLinkedList.GetCount(llist));

            UnsafeLinkedList.Remove(llist, 2);

            Assert.AreEqual(2, UnsafeLinkedList.GetCount(llist));

            var arr = stackalloc int[2];

            UnsafeLinkedList.CopyTo <int>(llist, arr, 0);

            Assert.AreEqual(1, arr[0]);
            Assert.AreEqual(3, arr[1]);

            UnsafeLinkedList.Free(llist);
        }
Exemple #15
0
        public void CopyTo(T[] array, int arrayIndex)
        {
            if (array == null)
            {
                throw new ArgumentNullException(nameof(array));
            }

            if ((uint)arrayIndex > array.Length)
            {
                throw new ArgumentOutOfRangeException(nameof(arrayIndex));
            }

            if (array.Length - arrayIndex < Count)
            {
                throw new ArgumentException("Insufficient space in the target location to copy the information.");
            }

            if (array.Length == 0)
            {
                return;

                fixed(void *ptr = array)
                UnsafeLinkedList.CopyTo <T>(m_inner, ptr, arrayIndex);
        }
Exemple #16
0
 public void AddAfter(ref Node previousNode, T item)
 {
     UnsafeLinkedList.AddAfter(m_inner, previousNode._node, item);
     previousNode._node = null;
 }
Exemple #17
0
 public void RemoveLast()
 {
     UnsafeLinkedList.RemoveLast(m_inner);
 }
Exemple #18
0
 public void Clear()
 {
     UnsafeLinkedList.Clear(m_inner);
 }
Exemple #19
0
 /// <summary>
 /// Constructor for <see cref="NativeLinkedList{T}"/>.
 /// </summary>
 /// <param name="create">Dummy value that does nothing.</param>
 public NativeLinkedList(bool create)
 {
     m_inner = UnsafeLinkedList.Allocate <T>();
 }
Exemple #20
0
        public void ConstructorTest()
        {
            var llist = UnsafeLinkedList.Allocate <int>();

            UnsafeLinkedList.Free(llist);
        }
Exemple #21
0
 public bool Remove(ref Node node)
 {
     return(UnsafeLinkedList.Remove(m_inner, ref node._node));
 }
Exemple #22
0
 public T GetLast()
 {
     return(UnsafeLinkedList.GetLast <T>(m_inner));
 }
Exemple #23
0
 public void AddLast(T item)
 {
     UnsafeLinkedList.AddLast(m_inner, item);
 }