package test.com.coding.basic; import static org.junit.Assert.fail; import org.junit.Assert; import org.junit.Test; import com.coding.basic.linklist.LinkedList; public class TestLinkedList { @Test public void testReverse(){ LinkedList list = new LinkedList(); list.add(3); list.add(7); list.add(10); list.reverse(); Assert.assertEquals("10,7,3", list.toString()); Assert.assertEquals("10", list.get(0).toString()); } @Test public void testRemoveFirstHalf(){ LinkedList list = new LinkedList(); list.add(3); list.add(7); list.add(10); list.add(12); list.add(15); list.removeFirstHalf(); Assert.assertEquals("10", list.get(0).toString()); Assert.assertEquals("10,12,15", list.toString()); Assert.assertEquals(3, list.size()); } @Test public void testRemoveByLength(){ LinkedList list = new LinkedList(); list.add(3); list.add(7); list.add(10); list.add(12); list.add(15); list.remove(0, 2); Assert.assertEquals("10", list.get(0).toString()); Assert.assertEquals("10,12,15", list.toString()); Assert.assertEquals(3, list.size()); list.remove(1, 1); Assert.assertEquals("10", list.get(0).toString()); Assert.assertEquals("10,15", list.toString()); Assert.assertEquals(2, list.size()); } @Test public void testGetElements(){ LinkedList list = new LinkedList(); list.add(0); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); LinkedList indices = new LinkedList(); indices.add(1); indices.add(3); indices.add(4); indices.add(6); int[] elements = list.getElements(indices); StringBuilder sb = new StringBuilder(); for(int i=0;i<elements.length;i++){ sb.append(elements[i]).append(","); } String elementsStr = sb.length() == 0?"" : sb.substring(0, sb.length() - 1); Assert.assertEquals("1,3,4,6", elementsStr); try{ indices.add(7); list.getElements(indices); fail("下标越界,没抛出异常"); }catch(IndexOutOfBoundsException e){ } } @Test public void testSubtract(){ LinkedList list = new LinkedList(); list.add(0); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); LinkedList indices = new LinkedList(); indices.add(1); indices.add(3); indices.add(4); indices.add(6); list.subtract(indices); Assert.assertEquals("0,2,5", list.toString()); Assert.assertEquals(3, list.size()); } @Test public void testRemoveDuplicateValues(){ LinkedList list = new LinkedList(); list.add(0); list.add(0); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); list.add(4); list.add(4); list.add(5); list.add(6); list.add(6); list.removeDuplicateValues(); Assert.assertEquals("0,1,2,3,4,5,6", list.toString()); Assert.assertEquals(7, list.size()); } @Test public void testRemoveRange(){ LinkedList list = new LinkedList(); for(int i=0;i<10000;i++){ list.add(i); } list.removeRange(200, 900);//0-200=201,901-9999=9099 // Assert.assertEquals("0,1,2,3,6", list.toString()); Assert.assertEquals(9300, list.size()); } @Test public void testRemoveRange1(){ LinkedList list = new LinkedList(); for(int i=0;i<10000;i++){ list.add(i); } // list.removeRange(200, 900);//0-200=201,901-9999=9099 for(int i=201;i<901;i++){ list.remove(i); } Assert.assertEquals(9300, list.size()); } @Test public void testIntersection(){ LinkedList list1 = new LinkedList(); list1.add(0); list1.add(1); list1.add(2); list1.add(3); list1.add(5); list1.add(6); LinkedList list2 = new LinkedList(); list2.add(1); list2.add(2); list2.add(4); list2.add(5); LinkedList list3 = list1.intersection(list2); Assert.assertEquals("1,2,5", list3.toString()); } }