package com.coding.basic.homework_03.linkedListImpl;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.coding.basic.homework_01.Iterator;
public class TestLinkedList {
LinkedList list;
@Before
public void before(){
list = new LinkedList();
}
// @Test
public void test1(){
list.add(1);
list.add(2);
list.add(3);
list.remove(2);
list.add(4);
list.add(0, 0);
list.addFirst(-1);
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("size:" + list.size());
}
@Test
public void testReverse(){
list.add(3);
list.add(7);
list.add(10);
list.reverse();
String str = "";
Iterator it = list.iterator();
while(it.hasNext()){
str = str + it.next() + " ";
}
Assert.assertEquals("10 7 3 ", str);
}
@Test
public void testRemoveFirstHalf(){
list.add(2);
list.add(5);
list.add(7);
list.add(8);
list.add(10);
// Object[] obj = new Object[list.size() / 2];
Object[] obj = new Object[list.size() / 2 + 1];
list.removeFirstHalf();
for(int i = 0; i < obj.length; i++){
obj[i] = list.get(i);
}
// Assert.assertArrayEquals(new Object[]{7, 8}, obj);
Assert.assertArrayEquals(new Object[]{7, 8, 10}, obj);
}
@Test
public void testRemove(){
list.add(0);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.add(7);
list.remove(3, 4);
Object[] obj = new Object[4];
for (int i = 0; i < obj.length; i++) {
obj[i] = list.get(i);
}
Assert.assertArrayEquals(new Object[]{0, 1, 2, 7}, obj);
}
@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[] result = LinkedList.getElements(list, listB);
Assert.assertArrayEquals(new int[]{101, 301, 401, 601}, result);
}
@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(601);
list.subtract(listB);
Object[] obj = new Object[list.size()];
for(int i = 0; i < list.size(); i++){
System.out.println(list.get(i));
obj[i] = list.get(i);
}
Assert.assertArrayEquals(new Object[]{101, 301, 401, 501, 701}, obj);
}
@Test
public void testRemoveDuplicateValues(){
list.add(11);
list.add(11);
list.add(11);
list.add(11);
list.add(101);
list.add(201);
list.add(201);
list.add(201);
list.add(301);
list.removeDuplicateValues();
Object[] obj = new Object[list.size()];
for(int i = 0; i < list.size(); i++){
obj[i] = list.get(i);
}
Assert.assertArrayEquals(new Object[]{11, 101, 201, 301}, obj);
}
@Test
public void testRemoveRange(){
list.add(1);
list.add(5);
list.add(7);
list.add(9);
list.add(11);
list.add(12);
list.add(13);
list.add(14);
list.add(15);
list.add(20);
list.add(30);
list.removeRange(8, 17);
Object[] obj = new Object[list.size()];
for(int i = 0; i < list.size(); i++){
obj[i] = list.get(i);
}
Assert.assertArrayEquals(new Object[]{1, 5, 7, 15, 20, 30}, obj);
}
@Test
public void testIntersection(){
list.add(1);
list.add(2);
list.add(4);
list.add(7);
list.add(9);
list.add(11);
list.add(15);
list.add(20);
LinkedList list1 = new LinkedList();
list1.add(2);
list1.add(3);
list1.add(5);
list1.add(6);
list1.add(7);
list1.add(8);
list1.add(11);
LinkedList result = list.intersection(list1);
Object[] obj = new Object[result.size()];
for(int i = 0; i < result.size(); i++){
obj[i] = result.get(i);
}
Assert.assertArrayEquals(new Object[]{2, 7, 11}, obj);
}
}