package com.coding.basic.list;
import java.util.Objects;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* KList测试
*
* Created by Korben on 18/02/2017.
*/
public class KListTest {
private KList<Integer> list;
private int initTestSize;
@Before
public void init() {
// 测试KArrayList
//list = new KArrayList<>();
// 测试KLinkedList
list = new KLinkedList<>();
//// 测试KDoubleLinkedList
//list = new KDoubleLinkedList<>();
initTestSize = 5;
for (int i = 0; i < initTestSize; i++) {
list.add(i);
}
}
@Test
public void size() throws Exception {
Assert.assertEquals(initTestSize, list.size());
}
@Test
public void isEmpty() throws Exception {
Assert.assertFalse(list.isEmpty());
KList<String> list = new KArrayList<>();
Assert.assertTrue(list.isEmpty());
}
@Test
public void contains() throws Exception {
Assert.assertTrue(list.contains(1));
Assert.assertFalse(list.contains(5));
}
@Test
public void toArray() throws Exception {
//Object[] array = list.toArray();
//Assert.assertEquals(initTestSize, array.length);
//for (int i = 0; i < array.length; i++) {
// Assert.assertEquals(i, array[i]);
//}
}
@Test
public void add() throws Exception {
Assert.assertTrue(list.add(6));
Assert.assertTrue(list.contains(6));
Assert.assertEquals(initTestSize + 1, list.size());
}
@Test
public void remove() throws Exception {
Assert.assertEquals(0, list.remove(0).intValue());
Assert.assertEquals(initTestSize - 1, list.size());
Assert.assertFalse(list.contains(0));
}
@Test
public void clear() throws Exception {
list.clear();
Assert.assertTrue(list.isEmpty());
Assert.assertTrue(list.size() == 0);
}
@Test
public void get() throws Exception {
for (int i = 0; i < initTestSize; i++) {
Assert.assertTrue(Objects.equals(i, list.get(i)));
}
}
@Test
public void set() throws Exception {
for (int i = 0; i < initTestSize; i++) {
list.set(i, initTestSize);
Assert.assertEquals(initTestSize, list.get(i).intValue());
}
}
@Test
public void addByIndex() throws Exception {
// test add by first index
list.add(0, 6);
Assert.assertEquals(initTestSize + 1, list.size());
Assert.assertEquals(6, list.get(0).intValue());
for (int i = 0; i < initTestSize; i++) {
Assert.assertEquals(i, list.get(i + 1).intValue());
}
// test add by last index
init();
list.add(initTestSize - 1, 6);
Assert.assertEquals(initTestSize + 1, list.size());
Assert.assertEquals(initTestSize - 1, list.get(initTestSize).intValue());
Assert.assertEquals(6, list.get(initTestSize - 1).intValue());
for (int i = 0; i < initTestSize - 1; i++) {
Assert.assertEquals(i, list.get(i).intValue());
}
// test add by middle index
init();
list.add(3, 90);
Assert.assertEquals(initTestSize + 1, list.size());
Assert.assertEquals(list.get(0).intValue(), 0);
Assert.assertEquals(list.get(1).intValue(), 1);
Assert.assertEquals(list.get(2).intValue(), 2);
Assert.assertEquals(list.get(3).intValue(), 90);
Assert.assertEquals(list.get(4).intValue(), 3);
Assert.assertEquals(list.get(5).intValue(), 4);
}
@Test
public void removeByObject() throws Exception {
Assert.assertTrue(list.remove(new Integer(3)));
Assert.assertEquals(initTestSize - 1, list.size());
}
@Test
public void indexOf() throws Exception {
for (int i = 0; i < initTestSize; i++) {
Assert.assertEquals(i, list.indexOf(i));
}
}
}