package com.github.congcongcong250.coding2017.basicTest; import static org.junit.Assert.*; import java.util.NoSuchElementException; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.github.congcongcong250.coding2017.basic.WArrayList; import com.github.congcongcong250.coding2017.basic.WLinkedList; import com.github.congcongcong250.coding2017.basic.WIterator; public class WLinkedListTest implements testCase { WLinkedList testlist = new WLinkedList(); @Override @Before public void setUp() { for(int i = 0; i < 20;i++){ testlist.add(i); } } @Override @After public void tearDown() { testlist.clear(); } @Override @Test public void testAdd() { assertEquals(20,testlist.size()); assertEquals(0,testlist.get(0)); assertEquals(19,testlist.get(19)); testlist.add(11, 100); assertEquals(21,testlist.size()); assertEquals(5,testlist.get(5)); assertEquals(100,testlist.get(11)); assertEquals(18,testlist.get(19)); testlist.addFirst(200); assertEquals(22,testlist.size()); assertEquals(200,testlist.get(0)); assertEquals(4,testlist.get(5)); assertEquals(100,testlist.get(12)); assertEquals(17,testlist.get(19)); testlist.addLast(300); assertEquals(23,testlist.size()); assertEquals(200,testlist.get(0)); assertEquals(4,testlist.get(5)); assertEquals(100,testlist.get(12)); assertEquals(17,testlist.get(19)); assertEquals(300,testlist.get(22)); } @Override @Test public void testRemove() { assertEquals(20,testlist.size()); assertEquals(0,testlist.get(0)); assertEquals(19,testlist.get(19)); testlist.remove(10); assertEquals(19,testlist.size()); assertEquals(4,testlist.get(4)); assertEquals(9,testlist.get(9)); assertEquals(11,testlist.get(10)); assertEquals(19,testlist.get(18)); testlist.removeFirst(); assertEquals(18,testlist.size()); assertEquals(1,testlist.get(0)); assertEquals(12,testlist.get(10)); assertEquals(19,testlist.get(17)); testlist.removeLast(); assertEquals(17,testlist.size()); assertEquals(1,testlist.get(0)); assertEquals(12,testlist.get(10)); assertEquals(18,testlist.get(16)); } @Test(expected=IndexOutOfBoundsException.class) public void testgetneg(){ WLinkedList emptyList = new WLinkedList(); Object o = emptyList.get(-2); } @Test(expected=IndexOutOfBoundsException.class) public void testgetout(){ Object o = testlist.get(31); } @Test(expected=IndexOutOfBoundsException.class) public void testremoveExp(){ Object o = testlist.remove(31); } @Override @Test public void testFunctional() { WIterator itr = testlist.wIterator(); assertTrue(itr.hasNext()); for(int i = 0; i < 12; i++){ assertEquals(i, itr.next()); } //previous() function not yet defined in interface itr.remove(); assertTrue(itr.hasNext()); assertEquals(12, itr.next()); assertEquals(19, testlist.size()); for(int i = 13; i < 20; i++){ assertEquals(i, itr.next()); } assertFalse(itr.hasNext()); boolean hasExp = false; try{ itr.next(); }catch (NoSuchElementException e){ hasExp = true; } assertTrue(hasExp); } }