package com.nitaty.test;
import static org.junit.Assert.*;
import java.util.Arrays;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.coding.basic.LinkedList;
public class LinkedListTest {
LinkedList list;
@Before
public void setUp() throws Exception {
list=new LinkedList();
for (int i =0; i < 100; i++) {
list.add(i);
}
}
@After
public void tearDown() throws Exception {
}
@Test
public void testReverse() throws Exception {
list.reverse();
for (int i = 1; i < 100; i++) {
Assert.assertEquals(100-i, list.get(i-1));
}
}
@Test
public void testRemoveFirstHalf() throws Exception {
list.removeFirstHalf();
for (int i = 50; i < 100; i++) {
Assert.assertEquals(i, list.get(i-50));
}
}
@Test
public void testRemoveIntInt() {
int startIndex= 0;
int length=50;
int stopIndex=Math.min(startIndex+length, list.size());
list.remove(startIndex,length);
for (int i = 0; i < startIndex; i++) {
Assert.assertEquals(i, list.get(i));
}
for(int i=startIndex;i<list.size();i++){
Assert.assertEquals(i+length, list.get(i));
}
}
@Test
public void testGetElements() {
LinkedList listB=new LinkedList();
listB.add(0);
listB.add(1);
listB.add(10);
listB.add(50);
listB.add(90);
listB.add(99);
int[] test={0,1,10,50,90,99};
int[] arr=list.getElements(listB);
Assert.assertArrayEquals(test,arr);
}
@Test
public void testSubtract() {
LinkedList listB=new LinkedList();
listB.add(0);
listB.add(1);
listB.add(10);
listB.add(50);
listB.add(90);
listB.add(99);
listB.add(200);
list.subtract(listB);
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < listB.size(); j++) {
Assert.assertNotEquals(listB.get(j), list.get(i));
}
}
}
@Test
public void testRemoveDuplicateValues() {
LinkedList dupList = new LinkedList();
for(int i=0;i<100;i++){
dupList.add(i);
dupList.add(i);
dupList.add(i);
}
dupList.removeDuplicateValues();
for (int i = 0; i < list.size(); i++) {
Assert.assertEquals(dupList.get(i), list.get(i));
}
}
@Test
public void testRemoveRange() {
list.removeRange(-1, 60);
for (int i = 0; i < list.size(); i++) {
Assert.assertEquals(i+60, list.get(i));
}
}
@Test
public void testIntersection() {
LinkedList listB=new LinkedList();
listB.add(-2);
listB.add(0);
listB.add(1);
listB.add(10);
listB.add(50);
listB.add(90);
listB.add(99);
listB.add(100);
listB.add(200);
LinkedList newList=list.intersection(listB);
for (int i = 1; i < listB.size()-2; i++) {
Assert.assertEquals(listB.get(i), newList.get(i-1));
}
}
}