package com.github.ipk2015.coding2017.basic.test;
import static org.junit.Assert.*;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
import com.github.ipk2015.coding2017.basic.Iterator;
import com.github.ipk2015.coding2017.basic.linkedlist.LinkedList;
public class LinkedListTest {
LinkedList list;
@Before
public void setUp() throws Exception {
list=new LinkedList();
}
private static String toString(LinkedList list){
Iterator iterator = list.iterator();
StringBuilder builder=new StringBuilder();
int next;
while(iterator.hasNext()){
next = (Integer)iterator.next();
builder.append(next+",");
}
return builder.toString();
}
@Test
public void testAddObject() {
list.add("hehe1");
list.add("hehe2");
assertEquals("hehe2", list.get(1));
}
@Test
public void testAddIntObject() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.add(1,"arm");
assertEquals("arm", list.get(1));
}
@Test
public void testGet() {
list.add("hehe1");
list.add("hehe2");
assertEquals("hehe2", list.get(1));
}
@Test
public void testRemoveInt() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.remove(1);
assertEquals(2, list.size());
}
@Test
public void testSize() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
assertEquals(3, list.size());
}
@Test
public void testAddFirst() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.addFirst("arm");
assertEquals("arm", list.get(0));
}
@Test
public void testAddLast() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.addLast("arm");
assertEquals("arm", list.get(list.size()-1));
}
@Test
public void testRemoveFirst() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.removeFirst();
assertEquals("hehe2", list.get(0));
}
@Test
public void testRemoveLast() {
list.add("hehe1");
list.add("hehe2");
list.add("hehe3");
list.removeLast();
assertEquals("hehe2", list.get(list.size()-1));
}
@Test
public void testReverse() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.reverse();
assertEquals("4,3,2,1,", toString(list));
}
@Test
public void testRemoveFirstHalf() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.removeFirstHalf();
assertEquals("3,4,5,", toString(list));
}
@Test
public void testRemoveIntInt() {
list.add(1);
list.add(3);
list.add(5);
list.add(7);
list.add(9);
list.add(10);
list.add(11);
list.remove(3, 2);
assertEquals("1,3,5,10,11,", toString(list));
list.remove(0, 3);
assertEquals("10,11,", toString(list));
}
@Test
public void testGetElements() {
list.add(11);
list.add(101);
list.add(201);
list.add(301);
list.add(401);
list.add(501);
list.add(601);
list.add(701);
LinkedList mList=new LinkedList();
mList.add(1);
mList.add(3);
mList.add(4);
mList.add(6);
int[] elements = list.getElements(mList);
assertEquals("[101,301,401,601]", Arrays.toString(elements).replaceAll(" ", ""));
}
@Test
public void testSubtract() {
list.add(11);
list.add(101);
list.add(201);
list.add(301);
list.add(401);
list.add(501);
list.add(601);
list.add(701);
LinkedList mList=new LinkedList();
mList.add(101);
mList.add(301);
mList.add(501);
mList.add(601);
list.subtract(mList);
assertEquals("11,201,401,701,", toString(list));
}
@Test
public void testRemoveDuplicateValues() {
list.add(11);
list.add(11);
list.add(101);
list.add(101);
list.add(101);
list.add(201);
list.add(301);
list.add(301);
list.add(401);
list.add(401);
list.add(501);
list.removeDuplicateValues();
assertEquals("11,101,201,301,401,501,", toString(list));
}
@Test
public void testRemoveRange() {
list.add(11);
list.add(101);
list.add(201);
list.add(301);
list.add(401);
list.add(501);
list.add(601);
list.add(701);
list.add(801);
list.add(901);
list.add(1001);
list.removeRange(801, 1101);
assertEquals("11,101,201,301,401,501,601,701,", toString(list));
list.removeRange(100, 400);
assertEquals("11,401,501,601,701,", toString(list));
list.removeRange(1, 500);
assertEquals("501,601,701,", toString(list));
list.removeRange(700, 900);
assertEquals("501,601,", toString(list));
list.removeRange(1,200);
assertEquals("501,601,", toString(list));
list.removeRange(700, 900);
assertEquals("501,601,", toString(list));
list.removeRange(1, 700);
assertEquals("", toString(list));
}
@Test
public void testRsection() {
list.add(11);
list.add(21);
list.add(31);
LinkedList mList=new LinkedList();
mList.add(1);
mList.add(2);
mList.add(11);
mList.add(25);
mList.add(35);
mList=list.rsection(mList);
assertEquals("1,2,11,11,21,25,31,35,", toString(mList));
}
}