예제 #1
0
        /* Methods */

        public TransUnitNode InsertNext(TransUnitData newNodeData)
        {
            TransUnitNode newNode;

            if (head != null)
            {
                if (head.NextSibling == null)
                {
                    newNode = new TransUnitNode(newNodeData, head);
                    head    = newNode;
                }
                else
                {
                    newNode = new TransUnitNode(newNodeData, head, head.NextSibling);
                    while (head.NextSibling != null)
                    {
                        head = head.NextSibling;
                    }
                }
            }
            else
            {
                newNode = new TransUnitNode(newNodeData);
                head    = newNode;
            }

            if (tail == null)
            {
                tail = newNode;
            }

            count++;

            return(newNode);
        }
예제 #2
0
        public void DoublyLinkedList_RemoveAtIndex_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);
            doublyLinkedList.InsertNext(secondTestData);
            doublyLinkedList.InsertNext(thirdTestData);

            TransUnitNode removedNode = doublyLinkedList.RemoveAtIndex(2);

            // Assertions set.
            Assert.AreEqual(2, doublyLinkedList.Count);
            Assert.AreEqual(thirdTestData, removedNode.Data);
            Assert.AreEqual(-1, doublyLinkedList.GetIndexOf(thirdTestData));

            Assert.AreEqual(secondTestData, doublyLinkedList.Head.Data);
            Assert.AreEqual(firstTestData, doublyLinkedList.Head.PreviousSibling.Data);
            Assert.IsNull(doublyLinkedList.Head.NextSibling);

            Assert.AreEqual(firstTestData, doublyLinkedList.Tail.Data);
            Assert.IsNull(doublyLinkedList.Tail.PreviousSibling);
            Assert.AreEqual(secondTestData, doublyLinkedList.Tail.NextSibling.Data);
        }
        public void TransUnitData_Clear_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList transUnitList = doc.GetElementsByTagName("trans-unit");

            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);

            TransUnitNode firstTestNode  = new TransUnitNode(firstTestData);
            TransUnitNode secondTestNode = new TransUnitNode(secondTestData);
            TransUnitNode thirdTestNode  = new TransUnitNode(thirdTestData);

            // Setting Relations Between Nodes.
            firstTestNode.NextSibling = secondTestNode;

            secondTestNode.PreviousSibling = firstTestNode;
            secondTestNode.NextSibling     = thirdTestNode;

            thirdTestNode.PreviousSibling = secondTestNode;

            secondTestNode.Clear();

            // Assertions set.
            Assert.IsNull(secondTestNode.Data);
            Assert.IsNull(secondTestNode.PreviousSibling);
            Assert.IsNull(secondTestNode.NextSibling);
        }
예제 #4
0
        public void DoublyLinkedList_GetIndexOf_Test_4()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);
            TransUnitData fourthTestData = new TransUnitData(transUnitList[3]);
            TransUnitData fifthTestData  = new TransUnitData(transUnitList[4]);


            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);
            doublyLinkedList.InsertNext(secondTestData);
            doublyLinkedList.InsertPrevious(thirdTestData);
            doublyLinkedList.InsertNext(fourthTestData);
            doublyLinkedList.InsertPrevious(fifthTestData);

            // Assertions set.
            Assert.AreEqual(0, doublyLinkedList.GetIndexOf(firstTestData));
            Assert.AreEqual(2, doublyLinkedList.GetIndexOf(secondTestData));
            Assert.AreEqual(1, doublyLinkedList.GetIndexOf(thirdTestData));
            Assert.AreEqual(3, doublyLinkedList.GetIndexOf(fifthTestData));
            Assert.AreEqual(4, doublyLinkedList.GetIndexOf(fourthTestData));
        }
예제 #5
0
        public void DoublyLinkedList_Remove_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);
            doublyLinkedList.InsertNext(secondTestData);
            doublyLinkedList.InsertNext(thirdTestData);

            doublyLinkedList.Remove();
            doublyLinkedList.Remove();
            doublyLinkedList.Remove();

            // Assertions set.
            Assert.AreEqual(0, doublyLinkedList.Count);
            Assert.IsNull(doublyLinkedList.Head);
            Assert.IsNull(doublyLinkedList.Tail);

            Assert.AreEqual(-1, doublyLinkedList.GetIndexOf(firstTestData));
            Assert.AreEqual(-1, doublyLinkedList.GetIndexOf(secondTestData));
            Assert.AreEqual(-1, doublyLinkedList.GetIndexOf(thirdTestData));
        }
예제 #6
0
        public TransUnitNode InsertPrevious(TransUnitData newNodeData)
        {
            TransUnitNode newNode;

            if (head != null)
            {
                if (head.PreviousSibling != null)
                {
                    newNode = new TransUnitNode(newNodeData, head.PreviousSibling, head);
                }
                else
                {
                    newNode = new TransUnitNode(newNodeData);

                    newNode.NextSibling  = head;
                    head.PreviousSibling = newNode;

                    tail = newNode;
                }
            }
            else
            {
                newNode = new TransUnitNode(newNodeData);

                tail = newNode;
                head = newNode;
            }


            count++;

            return(newNode);
        }
예제 #7
0
        public void InsertAtIndex(TransUnitData newItemData, int index)
        {
            TransUnitNode temporaryHead = head;

            if (index > count || index < 0)
            {
                throw new ArgumentOutOfRangeException("Out of range exception.");
            }

            if (this[index] != null)
            {
                if (this[index].PreviousSibling != null)
                {
                    this.head = this[index].PreviousSibling;
                    this.InsertNext(newItemData);

                    head = temporaryHead;
                }
                else
                {
                    this.head = this[index];
                    this.InsertPrevious(newItemData);

                    head = temporaryHead;
                }
            }
            else
            {
                this.InsertNext(newItemData);
            }
        }
        public void TransUnitData_Creation_WithPreviousNext_Test_6()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList transUnitList = doc.GetElementsByTagName("trans-unit");

            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);

            // Setting Relations Between Nodes.
            TransUnitNode firstTestNode  = new TransUnitNode(firstTestData);
            TransUnitNode secondTestNode = new TransUnitNode(secondTestData, firstTestNode);
            TransUnitNode thirdTestNode  = new TransUnitNode(thirdTestData, secondTestNode, firstTestNode);

            // Assertions set.
            Assert.AreEqual(firstTestData, firstTestNode.Data);
            Assert.AreEqual(thirdTestNode, firstTestNode.PreviousSibling);
            Assert.AreEqual(secondTestNode, firstTestNode.NextSibling);

            Assert.IsNull(firstTestNode);

            Assert.AreEqual(secondTestData, secondTestNode.Data);
            Assert.AreEqual(firstTestNode, secondTestNode.PreviousSibling);

            Assert.IsNull(secondTestNode.PreviousSibling);
            Assert.AreEqual(thirdTestNode, secondTestNode.NextSibling);

            Assert.AreEqual(thirdTestData, thirdTestNode.Data);
            Assert.AreEqual(secondTestNode, thirdTestNode.PreviousSibling);
            Assert.AreEqual(firstTestNode, thirdTestNode.NextSibling);
        }
        public void TransUnitData_Creation_Test_2()
        {
            // Initialization.
            TransUnitData testData = null;
            TransUnitNode testNode = new TransUnitNode(testData);

            // Assertions set.
            Assert.IsNull(testNode.Data);
            Assert.IsNull(testNode.PreviousSibling);
            Assert.IsNull(testNode.NextSibling);
        }
예제 #10
0
        public void TransUnitData_Creation_WithPreviousNext_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList transUnitList = doc.GetElementsByTagName("trans-unit");

            TransUnitData thirdTestData = new TransUnitData(transUnitList[2]);

            // Assertions set.
            TransUnitNode firstTestNode  = null;
            TransUnitNode secondTestNode = null;
            TransUnitNode thirdTestNode  = new TransUnitNode(thirdTestData, firstTestNode, secondTestNode);
        }
예제 #11
0
        public void TransUnitData_Creation_Test_1()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList transUnitList = doc.GetElementsByTagName("trans-unit");

            TransUnitData testData = new TransUnitData(transUnitList[0]);
            TransUnitNode testNode = new TransUnitNode(testData);

            // Assertions set.
            Assert.AreEqual(testData, testNode.Data);
            Assert.IsNull(testNode.PreviousSibling);
            Assert.IsNull(testNode.NextSibling);
        }
예제 #12
0
        public void DoublyLinkedList_InsertAtIndex_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);

            // Assertions set.
            Assert.ThrowsException <ArgumentOutOfRangeException>(() => doublyLinkedList.InsertAtIndex(secondTestData, 3));
        }
예제 #13
0
        public void DoublyLinkedList_GetIndexOf_Test_5()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);

            // Assertions set.
            Assert.AreEqual(-1, doublyLinkedList.GetIndexOf(secondTestData));
        }
예제 #14
0
        public void DoublyLinkedList_InsertAtIndex_Test_3()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData = new TransUnitData(transUnitList[0]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertAtIndex(firstTestData, 0);

            // Assertions set.
            Assert.AreEqual(1, doublyLinkedList.Count);
            Assert.AreEqual(firstTestData, doublyLinkedList.Head.Data);
            Assert.AreEqual(firstTestData, doublyLinkedList.Tail.Data);
        }
예제 #15
0
        public void TransUnitData_Creation_WithPrevious_Test_2()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList transUnitList = doc.GetElementsByTagName("trans-unit");

            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);

            TransUnitNode firstTestNode  = null;
            TransUnitNode secondTestNode = new TransUnitNode(secondTestData, firstTestNode);

            // Assertions set.
            Assert.AreEqual(transUnitList[1], secondTestNode.Data);
            Assert.IsNull(secondTestNode.PreviousSibling);
            Assert.IsNull(secondTestNode.NextSibling);
        }
예제 #16
0
        /* Returns first occurance of the search data */
        public int GetIndexOf(TransUnitData searchData)
        {
            int           index      = 0;
            TransUnitNode searchNode = tail;

            for (int i = 0; i < count; i++)
            {
                if (searchNode != null)
                {
                    if (searchNode.Data == searchData)
                    {
                        return(index);
                    }

                    searchNode = searchNode.NextSibling;
                    index++;
                }
            }

            return(-1);
        }
예제 #17
0
        public void DoublyLinkedList_InsertAtIndex_Test_4()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);

            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertNext(firstTestData);
            doublyLinkedList.InsertAtIndex(secondTestData, 1);

            // Assertions set.
            Assert.AreEqual(2, doublyLinkedList.Count);
            Assert.AreEqual(secondTestData, doublyLinkedList[1].Data);
            Assert.AreEqual(secondTestData, doublyLinkedList.Head.Data);
            Assert.AreEqual(firstTestData, doublyLinkedList.Head.PreviousSibling.Data);
            Assert.AreEqual(null, doublyLinkedList.Head.NextSibling);
        }
예제 #18
0
        public void DoublyLinkedList_InsertNextPrevious_Test_6()
        {
            // Initialization.
            XmlDocument doc = new XmlDocument();

            doc.Load(xliffPath);

            XmlNodeList   transUnitList  = doc.GetElementsByTagName("trans-unit");
            TransUnitData firstTestData  = new TransUnitData(transUnitList[0]);
            TransUnitData secondTestData = new TransUnitData(transUnitList[1]);
            TransUnitData thirdTestData  = new TransUnitData(transUnitList[2]);


            DoublyLinkedList doublyLinkedList = new DoublyLinkedList();

            doublyLinkedList.InsertPrevious(firstTestData);
            doublyLinkedList.InsertNext(secondTestData);
            doublyLinkedList.InsertPrevious(thirdTestData);

            // Assertions set.
            Assert.AreEqual(3, doublyLinkedList.Count);
            Assert.AreEqual(secondTestData, doublyLinkedList.Head.Data);
            Assert.AreEqual(firstTestData, doublyLinkedList.Tail.Data);
        }