package test;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import main.LinkedList;
public class LinkedListTest {
private LinkedList list;
@Before
public void setUp() throws Exception {
list = new LinkedList();
}
@Test
public void testReverse() {
list.add(3);
list.add(2);
list.add(1);
list.add(0);
int[] expected = {0,1,2,3};
list.reverse();
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
}
@Test
public void testRemoveFirstHalf() {
list.add(3);
list.add(2);
list.add(1);
list.add(0);
int[] expected = {1,0};
list.removeFirstHalf();
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
list = new LinkedList();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
list.add(0);
int[] expected1 = {2,1,0};
list.removeFirstHalf();
for(int i=0;i<list.size();i++){
assertEquals(expected1[i], list.get(i));
}
}
@Test
public void testRemoveIntInt() {
list.add(3);
list.add(2);
list.add(1);
list.add(0);
int[] expected = {3,0};
list.remove(1,2);
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
list = new LinkedList();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
list.add(0);
list.remove(0,8);
int[] expected1 = {4,3,2,1,0};
for(int i=0;i<list.size();i++){
assertEquals(expected1[i], list.get(i));
}
}
@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 listB = new LinkedList();
listB.add(1);
listB.add(3);
listB.add(4);
listB.add(6);
int[] expected = {101,301,401,601};
int[] array = list.getElements(listB);
for(int i=0;i<array.length;i++){
assertEquals(expected[i], array[i]);
}
list = new LinkedList();
list.add(11);
list.add(101);
list.add(201);
list.add(301);
list.add(401);
list.add(501);
list.add(601);
list.add(701);
listB = new LinkedList();
listB.add(1);
listB.add(3);
listB.add(100);
listB.add(101);
int[] expected1 = {101,301};
int[] array1 = list.getElements(listB);
for(int i=0;i<array1.length;i++){
assertEquals(expected1[i], array1[i]);
}
list = new LinkedList();
list.add(11);
list.add(101);
list.add(201);
list.add(301);
list.add(401);
list.add(501);
list.add(601);
list.add(701);
listB = new LinkedList();
int[] array2 = list.getElements(listB);
assertEquals(0, array2.length);
}
@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 listB = new LinkedList();
listB.add(11);
listB.add(201);
listB.add(401);
listB.add(801);
int[] expected = {101,301,501,601,701};
list.subtract(listB);
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
list = new LinkedList();
list.add(101);
list.add(201);
list.add(301);
listB = new LinkedList();
int[] expected1 = {101,201,301};
list.subtract(listB);
for(int i=0;i<list.size();i++){
assertEquals(expected1[i], list.get(i));
}
}
@Test
public void testRemoveDuplicateValues() {
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(3);
list.add(4);
list.add(4);
int[] expected = {1,2,3,4};
list.removeDuplicateValues();
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
list = new LinkedList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
int[] expected1 = {1,2,3,4};
list.removeDuplicateValues();
for(int i=0;i<list.size();i++){
assertEquals(expected1[i], list.get(i));
}
}
@Test
public void testRemoveRange() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
int[] expected = {1,7};
list.removeRange(1, 7);
for(int i=0;i<list.size();i++){
assertEquals(expected[i], list.get(i));
}
list = new LinkedList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
int[] expected1 = {1,2,3,4,5,6,7};
list.removeRange(0,1);
for(int i=0;i<list.size();i++){
assertEquals(expected1[i], list.get(i));
}
}
@Test
public void testIntersection() {
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 listB = new LinkedList();
listB.add(11);
listB.add(33);
listB.add(201);
listB.add(401);
listB.add(801);
int[] expected = {11,201,401};
LinkedList result=list.intersection(listB);
for(int i=0;i<result.size();i++){
assertEquals(expected[i], result.get(i));
}
}
}