package main.week01.data_structure;
import static org.junit.Assert.*;
import java.util.Arrays;
import main.week01.data_structure.LinkedList.LinkedListIterator;
import org.junit.Before;
import org.junit.Test;
public class LinkedListTest {
private LinkedList list;
private LinkedList[] lists = new LinkedList[3];
@Before
public void setUp() throws Exception {
list = new LinkedList();
lists[0] = new LinkedList();
lists[1] = new LinkedList();
lists[2] = new LinkedList();
lists[1].add("A");
lists[2].add("A");
lists[2].add("B");
lists[2].add("C");
lists[2].add("D");
lists[2].add("E");
}
@Test
public void testGet() {
list.add("A");
list.add("B");
list.add(0, "C");
assertEquals("C", list.get(0));
}
@Test
public void testRemove() {
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add(0, "E");
assertEquals("E", list.remove(0));
assertEquals("D", list.remove(list.size() - 1));
assertEquals(3, list.size());
}
@Test
public void testIterator() {
LinkedListIterator iter = list.iterator();
list.add("A");
list.add("B");
list.add(0, "C");
assertTrue(iter.hasNext());
assertEquals("C", iter.next());
assertTrue(iter.hasNext());
assertEquals("A", iter.next());
assertTrue(iter.hasNext());
assertEquals("B", iter.next());
assertFalse(iter.hasNext());
}
@Test
public void testReverse() {
LinkedList l = lists[2];
l.reverse();
// assertEquals("", sb.toString());
// assertEquals("A", l.toString());
assertEquals("E->D->C->B->A->null", l.toString());
}
@Test
public void testRemoveFirstHalf() {
LinkedList l = lists[0];
l.removeFirstHalf();
LinkedListIterator iter = l.iterator();
StringBuilder sb = new StringBuilder();
while (iter.hasNext()) {
sb.append(iter.next());
sb.append("->");
}
sb.append("null");
assertEquals("null", sb.toString());
//assertEquals("A->null", sb.toString());
//assertEquals("C->D->E->null", sb.toString());
}
@Test
public void testRemoveByIndex() {
try{
LinkedList l = lists[2];
l.remove(0, 1);
System.out.println(l.toString());
}catch(Exception e){
assertEquals(IndexOutOfBoundsException.class, e.getClass());
}
}
@Test
public void testGetElements() {
list.add(11);
list.add(22);
list.add(33);
list.add(44);
list.add(55);
list.add(66);
list.add(77);
list.add(88);
list.add(99);
LinkedList l = new LinkedList();
l.add(1);
l.add(3);
l.add(4);
l.add(6);
try{
int[] res = list.getElements(l);
System.out.println(Arrays.toString(res));
}catch(Exception e){
assertEquals(e.getMessage(), "传入链表为空?");
}
}
@Test
public void testSubtract() {
list.add(11);
list.add(22);
list.add(33);
list.add(44);
list.add(55);
list.add(66);
list.add(77);
list.add(88);
list.add(99);
LinkedList l = new LinkedList();
l.add(11);
l.add(33);
l.add(44);
l.add(66);
try{
list.subtract(l);
System.out.println(list.toString());
}catch(Exception e){
assertEquals(e.getMessage(), "传入链表为空?");
}
}
@Test
public void testRemoveDuplicateValues() {
list.add(11);
list.add(11);
list.add(22);
list.add(33);
list.add(33);
list.removeDuplicateValues();
System.out.println(list.toString());
}
@Test
public void testRemoveRange() throws Exception {
list.add(11);
list.add(22);
list.add(33);
list.add(44);
list.add(55);
list.add(66);
list.add(77);
list.add(88);
list.add(99);
System.out.println(list.toString());
try{
list.removeRange(50, 80);
System.out.println(list.toString());
}catch(Exception e){
assertEquals(e.getMessage(), "输入有问题!");
}
}
@Test
public void testIntersection() {
list.add(11);
// list.add(22);
// list.add(33);
// list.add(44);
// list.add(55);
// list.add(66);
// list.add(77);
// list.add(88);
// list.add(99);
LinkedList l = new LinkedList();
l.add(11);
l.add(33);
// l.add(44);
// l.add(66);
System.out.println(list.intersection(l).toString());
}
}