package testcase; import static org.junit.Assert.*; import org.junit.Test; import com.basic.Iterator; import com.basic.LinkedList; public class TestLinkedList { /* * test add() and size() */ @Test public void testAdd() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); assertTrue(linkedList.size() == 2); } @Test public void testGet() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); assertTrue(linkedList.get(0).equals(3)); assertFalse(linkedList.get(0).equals("hello world")); assertTrue(linkedList.get(1).equals("hello world")); try { linkedList.get(-1); } catch (ArrayIndexOutOfBoundsException e) { assertNotNull(e); String errorInfo = "Invalid index to get:" + -1 + " out of range: [0," + linkedList.size() + "]"; assertTrue(e.getMessage().equals(errorInfo)); // System.out.println(e.getMessage()); } } @Test public void testRemove() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); linkedList.add(4); linkedList.add("Leon Deng"); try { linkedList.remove(-1); } catch (ArrayIndexOutOfBoundsException e) { assertNotNull(e); String errorInfo = "Invalid index to remove:" + -1 + " out of range: [0," + linkedList.size() + "]"; assertTrue(e.getMessage().equals(errorInfo)); } try { linkedList.remove(10); } catch (ArrayIndexOutOfBoundsException e) { assertNotNull(e); String errorInfo = "Invalid index to remove:" + 10 + " out of range: [0," + linkedList.size() + "]"; assertTrue(e.getMessage().equals(errorInfo)); } Object o = null; try { o = linkedList.remove(0); } catch (ArrayIndexOutOfBoundsException e) { assertNull(e); } assertTrue(o.equals(3)); try { o = linkedList.remove(2); } catch (ArrayIndexOutOfBoundsException e) { assertNull(e); } // System.out.println(o); assertTrue(o.equals("Leon Deng")); } @Test public void testAddFirst() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); linkedList.addFirst("Leon Deng"); assertTrue(linkedList.get(0).equals("Leon Deng")); assertTrue(linkedList.get(1).equals(3)); } @Test public void testAddLast() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); linkedList.addLast("Leon Deng"); assertTrue(linkedList.get(linkedList.size() - 1).equals("Leon Deng")); } @Test public void testRemoveFirst() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); Object o = linkedList.removeFirst(); assertTrue(o.equals(3)); o = linkedList.removeFirst(); assertTrue(o.equals("hello world")); } @Test public void testRemoveLast() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("hello world"); linkedList.add("Leon Deng"); Object o = linkedList.removeLast(); assertTrue(o.equals("Leon Deng")); o = linkedList.removeLast(); assertTrue(o.equals("hello world")); } @Test public void testInterator() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add("Leon Deng"); Iterator it = linkedList.iterator(); assertTrue(it.hasNext()); assertTrue(it.next().equals(3)); assertTrue(it.hasNext()); assertTrue(it.next().equals("Leon Deng")); assertFalse(it.hasNext()); } @Test public void testReverse() { LinkedList linkedList = new LinkedList(); linkedList.add(3); linkedList.add(4); linkedList.add(5); linkedList.add(6); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); // // linkedList.reverse(); // // it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); Object o1 = linkedList.get(0); Object o2 = linkedList.get(linkedList.size() - 1); linkedList.reverse(); Object o3 = linkedList.get(0); Object o4 = linkedList.get(linkedList.size() - 1); assertEquals(o1, o4); assertEquals(o2, o3); linkedList.reverse(); Object o5 = linkedList.get(0); Object o6 = linkedList.get(linkedList.size() - 1); assertEquals(o1, o5); assertEquals(o2, o6); } @Test public void testRemoveFirstHalf() { LinkedList linkedList = new LinkedList(); linkedList.add(2); linkedList.add(5); linkedList.add(7); linkedList.add(8); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); linkedList.removeFirstHalf(); assertTrue(linkedList.get(0).equals(7)); linkedList = new LinkedList(); linkedList.add(2); linkedList.add(5); linkedList.add(7); linkedList.add(8); linkedList.add(10); linkedList.removeFirstHalf(); assertTrue(linkedList.get(2).equals(10)); } @Test public void testRemoveIndexLength() { LinkedList linkedList = new LinkedList(); linkedList.add(2); linkedList.add(5); linkedList.add(7); linkedList.add(8); linkedList.add(10); linkedList.remove(0, 2); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); assertTrue(linkedList.get(0).equals(7)); linkedList = new LinkedList(); linkedList.add(2); linkedList.add(5); linkedList.add(7); linkedList.add(8); linkedList.add(10); linkedList.remove(2, 2); assertTrue(linkedList.get(0).equals(2)); assertTrue(linkedList.get(2).equals(10)); } @Test public void testGetElements() { // 11->101->201->301->401->501->601->701 listB = 1->3->4->6 LinkedList linkedList = new LinkedList(); linkedList.add(11); linkedList.add(101); linkedList.add(201); linkedList.add(301); linkedList.add(401); linkedList.add(501); linkedList.add(601); linkedList.add(701); LinkedList indexLinkedList = new LinkedList(); indexLinkedList.add(1); indexLinkedList.add(3); indexLinkedList.add(4); indexLinkedList.add(6); int[] elements = linkedList.getElements(indexLinkedList); // for (int i = 0; i < elements.length; i++) { // System.out.print(elements[i] + " "); // } // System.out.println(); assertEquals(elements[0], linkedList.get(1)); assertEquals(elements[1], linkedList.get(3)); assertEquals(elements[2], linkedList.get(4)); assertEquals(elements[3], linkedList.get(6)); } @Test public void testSubstract() { LinkedList linkedList = new LinkedList(); linkedList.add(11); linkedList.add(101); linkedList.add(201); linkedList.add(301); linkedList.add(401); linkedList.add(501); linkedList.add(601); linkedList.add(701); LinkedList substractList = new LinkedList(); substractList.add(11); substractList.add(301); substractList.add(404); substractList.add(501); substractList.add(701); linkedList.subtract(substractList); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); assertFalse(linkedList.get(0).equals(11)); assertTrue(linkedList.get(0).equals(101)); } @Test public void testRemoveDuplicateValues() { LinkedList linkedList = new LinkedList(); linkedList.add(1); linkedList.add(1); linkedList.add(2); linkedList.add(3); linkedList.add(3); linkedList.add(4); linkedList.add(4); linkedList.add(5); linkedList.removeDuplicateValues(); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); assertTrue(linkedList.get(0).equals(1)); assertTrue(linkedList.get(1).equals(2)); assertTrue(linkedList.get(4).equals(5)); } @Test public void testRemoveRange() { LinkedList linkedList = new LinkedList(); for (int i = 0; i < 10; i++) { linkedList.add(i); } linkedList.removeRange(3, 7); // Iterator it = linkedList.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); assertTrue(linkedList.get(3).equals(3)); assertTrue(linkedList.get(4).equals(7)); } @Test public void testIntersection() { LinkedList linkedList = new LinkedList(); linkedList.add(1); linkedList.add(2); linkedList.add(3); linkedList.add(4); linkedList.add(5); linkedList.add(6); LinkedList secondList = new LinkedList(); secondList.add(1); secondList.add(3); secondList.add(5); secondList.add(6); LinkedList intersection = linkedList.intersection(secondList); // Iterator it = intersection.iterator(); // for ( ; it.hasNext(); ) { // System.out.print(it.next() + " "); // } // System.out.println(); assertTrue(intersection.get(0).equals(1)); assertTrue(intersection.get(1).equals(3)); assertTrue(intersection.get(2).equals(5)); assertTrue(intersection.get(3).equals(6)); } }