package test.com.coding.basic.linklist; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.coding.basic.Iterator; import com.coding.basic.linklist.LinkedList; public class LinkedListTest { LinkedList<Object> ls ; @Before public void setup() { ls = new LinkedList<>(); } /** * 测试一个参数的add方法 * ArrayList当数据超过10时进行第一次扩容 */ @Test public void add(){ ls.add(3); ls.add("a"); for (int i = 0; i < 10; i++) { ls.add(i); } Assert.assertEquals(ls.size(), 12); Assert.assertEquals(ls.get(1), "a"); } /** * 两个参数的add方法 */ @Test//(expected = IndexOutOfBoundsException.class) public void add4ToPramter(){ ls.add(0, 0); ls.add(1,1); ls.add(2, 2); ls.add(3,3); for (int i = 0; i < 10; i++) { ls.add(3,i); } Assert.assertEquals(ls.size(), 14); Assert.assertEquals(ls.get(3), 9); Assert.assertEquals(ls.get(13), 3); //打开下面操作抛出异常 //ls.add(15, "a"); } /** * get(i) */ @Test//(expected = IndexOutOfBoundsException.class) public void get(){ for (int i = 0; i < 10; i++) { ls.add(i); } Assert.assertEquals(ls.get(9), 9); //打开下面操作抛出异常 //ls.get(12); } @Test public void remove(){ for (int i = 0; i < 10; i++) { ls.add(i); } Assert.assertEquals(ls.remove(5),5); Assert.assertEquals(ls.size(),9); Assert.assertEquals(ls.remove(8),9); Assert.assertEquals(ls.size(),8); } @Test public void size(){ Assert.assertEquals(ls.size(),0); ls.add("a"); Assert.assertEquals(ls.size(),1); ls.add(0,0); Assert.assertEquals(ls.size(),2); ls.remove(0); Assert.assertEquals(ls.size(),1); } @Test//(expected = NoSuchElementException.class) public void iterator(){ for (int i = 0; i < 10; i++) { ls.add(i); } Iterator it = ls.iterator(); Assert.assertEquals(it.hasNext(),true); for (int i = 0; i < 10; i++) { it.next(); } Assert.assertEquals(it.hasNext(),false); //打开下面操作抛出异常 //it.next(); } @Test public void testReverse(){ ls.add(3); ls.add(7); ls.add(10); ls.add(8); ls.reverse(); int[] expected = {8,10,7,3}; for (int i = 0; i < ls.size(); i++) { Assert.assertEquals(expected[i], ls.get(i)); } } public void testRemoveFirstHalf(){ ls.add(2); ls.add(5); ls.add(7); ls.add(8); ls.add(10); int[] expected = {7,8,10}; ls.removeFirstHalf(); for (int i = 0; i < ls.size(); i++) { Assert.assertEquals(ls.get(i), expected[i]); } } @Test public void testRemove(){ ls.add(2); ls.add(5); ls.add(7); ls.add(8); ls.add(10); ls.remove(0, 1); int[] expected = {5,7,8,10}; exceptResult(ls,expected); ls.remove(3,1); int[] expected1 = {5,7,8}; exceptResult(ls,expected1); ls.add(9); ls.remove(2,8); int[] expected2 = {5,7}; exceptResult(ls,expected2); ls.remove(0,9); int[] expected3 = {}; exceptResult(ls,expected3); } @Test public void testGetElements(){ ls.add(11);ls.add(101); ls.add(201);ls.add(301); ls.add(401);ls.add(501); ls.add(601);ls.add(701); LinkedList<Integer> list = new LinkedList<>(); list.add(1);list.add(3); list.add(4);list.add(6); int[] exceptArr = {101,301,401,601}; int[] actual= ls.getElements(list); for (int i = 0; i < actual.length; i++) { Assert.assertEquals(exceptArr[i],actual[i]); } Assert.assertEquals(exceptArr.length,actual.length); } @Test public void testSubtract(){ ls.add(2); ls.add(5); ls.add(7); ls.add(8); ls.add(10); LinkedList<Object> list = new LinkedList<>(); list.add(2); list.add(5); int[] exceptArr = {7,8,10}; ls.subtract(list); exceptResult(ls,exceptArr); } @Test public void testRemoveDuplicateValues(){ ls.add(2); ls.add(5); ls.add(5); ls.add(5); ls.add(8); ls.add(8); ls.removeDuplicateValues(); int[] exceptArr = {2,5,8}; exceptResult(ls,exceptArr); } @Test public void testRemoveRange(){ ls.add(2); ls.add(5); ls.add(7); ls.add(8); ls.add(10); ls.removeRange(0, 7); int[] exceptArr = {7,8,10}; exceptResult(ls,exceptArr); } @Test public void testIntersection(){ ls.add(-2); ls.add(-1); ls.add(0); ls.add(3); ls.add(5); LinkedList<Object> list = new LinkedList<>(); list.add(-1); list.add(0); list.add(5); list.add(9); LinkedList<Object> newList = ls.intersection(list); int[] exceptArr = {-1,0,5}; exceptResult(newList,exceptArr); } private void exceptResult(LinkedList<Object> ls,int[] exceptArr){ Assert.assertEquals(ls.size(), exceptArr.length); for (int i = 0; i < exceptArr.length; i++) { Assert.assertEquals(exceptArr[i],ls.get(i)); } } }