package com.aaront.execrise.generic;
import com.aaront.exercise.generic.GenericLinkedList;
import com.aaront.exercise.generic.GenericIterator;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* @author tonyhui
* @since 17/2/22
*/
public class GenericLinkedListTest {
private GenericLinkedList<String> linkedList = new GenericLinkedList<>();
@Before
public void init() {
linkedList.add("1");
linkedList.add("2");
linkedList.add("3");
}
@Test
public void testAdd() {
Assert.assertArrayEquals(new String[]{"1", "2", "3" }, linkedList.toArray());
}
@Test
public void testAddIndex() {
linkedList.add(1, "10");
linkedList.add(0, "8");
Assert.assertArrayEquals(new String[]{"8", "1", "10", "2", "3" }, linkedList.toArray());
}
@Test
public void testAddFirst() {
linkedList.addFirst("-1");
Assert.assertArrayEquals(new String[]{"-1", "1", "2", "3" }, linkedList.toArray());
}
@Test
public void testAddLast() {
linkedList.addLast("99");
Assert.assertArrayEquals(new String[]{"1", "2", "3", "99" }, linkedList.toArray());
}
@Test
public void testRemove() {
testAddIndex();
linkedList.remove(1);
linkedList.remove(2);
linkedList.add(3, "3");
linkedList.add(1, "2");
Assert.assertArrayEquals(new String[]{"8", "2", "10", "3", "3" }, linkedList.toArray());
}
@Test
public void testRemoveFirst() {
linkedList.removeFirst();
linkedList.removeFirst();
Assert.assertArrayEquals(new String[]{"3" }, linkedList.toArray());
}
@Test
public void testRemoveLast() {
linkedList.removeLast();
linkedList.removeLast();
Assert.assertArrayEquals(new String[]{"1" }, linkedList.toArray());
}
@Test
public void testToArray() {
Assert.assertArrayEquals(new String[]{"1", "2", "3" }, linkedList.toArray());
}
@Test
public void testToGenericArray() {
Assert.assertArrayEquals(new String[]{"1", "2", "3" }, linkedList.toArray(new String[0]));
}
@Test
public void testIterator() {
GenericIterator<String> genericIterator = linkedList.iterator();
while (genericIterator.hasNext()) {
genericIterator.next();
genericIterator.remove();
}
Assert.assertArrayEquals(new String[]{}, linkedList.toArray());
}
}