public void testBasicBuildAndGet() { for (int size = 0; size < 15; ++size) { final DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>(); DoublyLinkedList.LinkNode<Integer> prevLinkNode = null; for (int i = 0; i < size; ++i) { final DoublyLinkedList.LinkNode<Integer> linkNode = list.add(i); assertEquals(i, linkNode.getIndex()); assertEquals("i=" + i, (Integer) i, linkNode.getElt()); assertEquals(prevLinkNode, linkNode.getPrev()); assertNull(linkNode.getNext()); assertEquals(i + 1, list.size()); prevLinkNode = linkNode; } assertEquals("size=" + size, size, list.size()); for (int i = 0; i < size; ++i) { assertEquals("i=" + i, (Integer) i, list.get(i)); } } }
public void testInsertAndRemove() { final DoublyLinkedList<Integer> list = new DoublyLinkedList<Integer>(); // 2 5 8 // 1* b2 5 8 // 1 2a *3 5 8 // 1 2 3 4* b5 8 // 1 2 3 4 5 7* b8 // 1 2 3 4 5 6* b7 8 // 1 2 3 4 5 6 7 8a *9 // 1 2 3 4 5 6 7 8 9a *10 // 0* b1 2 3 4 5 6 7 8 9 10 list.add(2).add(5).add(8); final DoublyLinkedList.LinkNode<Integer> node2 = list.find(2); node2.push(1); final DoublyLinkedList.LinkNode<Integer> node3 = node2.add(3); node3.getNext().push(4).find(8).add(9); list.add(10); list.getFirst().push(0); list.find(8).push(7).push(6); list.getLast().add(12); list.add(11, 11); list.add(13, 13); assertEquals(14, list.size()); for (int i = 0; i <= 13; ++i) { assertEquals("i=" + i, (Integer) i, list.get(i)); final DoublyLinkedList.LinkNode<Integer> node = list.getLinkNode(i); assertEquals(i, node.getIndex()); assertEquals((Integer) i, node.getElt()); } // test findNext final DoublyLinkedList.LinkNode<Integer> secondNode2 = list.add(2); final DoublyLinkedList.LinkNode<Integer> foundSecondNode2 = node2.findNext(); assertEquals(secondNode2, foundSecondNode2); assertNull(secondNode2.findNext()); secondNode2.add(3); // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 2 3 assertNull(secondNode2.findNext()); // test remove assertEquals(16, list.size()); assertEquals((Integer) 2, list.remove(14)); assertEquals(15, list.size()); assertEquals((Integer) 3, list.remove(14)); assertEquals(14, list.size()); for (int i = 0; i <= 13; ++i) { assertEquals("i=" + i, (Integer) i, list.get(i)); final DoublyLinkedList.LinkNode<Integer> node = list.getLinkNode(i); assertEquals(i, node.getIndex()); assertEquals((Integer) i, node.getElt()); } // completely drain the list for (int i = 0; i < 14; ++i) { assertEquals("i=" + i, (Integer) i, list.remove(0)); assertEquals(13 - i, list.size()); } }