package test.com.coding.basic.array;
import org.junit.Assert;
import org.junit.Test;
import com.coding.basic.array.ArrayList;
import com.coding.basic.array.ArrayUtil;
public class ArrayUtilTest {
ArrayUtil au = new ArrayUtil();
@Test
public void testReverseArray() {
int[] a = {7, 9, 30, 3, 4};
int[] assertArray = {4,3,30,9,7};
au.reverseArray(a);
assertResult(assertArray,a);
}
@Test
public void testRemoveZero() {
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int[] assertArray = {1,3,4,5,6,6,5,4,7,6,7,5};
int[] newArr = au.removeZero(oldArr);
assertResult(assertArray,newArr);
}
@Test
public void testMerge() {
int[] a1 = {3, 5, 7,8};
int[] a2 = {4, 5, 6,7};
int[] assertArray = {3,4,5,6,7,8};
//int[] a3 = au.merge(a1, a2);
int[] a3 = au.merge2(a1, a2);
assertResult(assertArray,a3);
}
@Test
public void testGrow() {
int[] oldArray = {2,3,6};
int size = 3;
int[] assertArray = {2,3,6,0,0,0};
int[] resultArr = au.grow(oldArray, size);
assertResult(assertArray,resultArr);
}
@Test
public void testFibonacci() {
int[] assertArray = {1,1,2,3,5,8,13};
int max = 15;
int[] resultArr = au.fibonacci(max);
assertResult(assertArray,resultArr);
max = 0;
int[] assertArray1 ={};
int[] resultArr1 = au.fibonacci(max);
assertResult(assertArray1,resultArr1);
}
@Test
public void testGetPrimes() {
int[] assertArray = {2,3,5,7,11,13,17,19};
int max = 23;
int[] resultArr = au.getPrimes(max);
assertResult(assertArray,resultArr);
}
@Test
public void testGetPerfectNumbers() {
int[] assertArray = {6,28,496};
int max = 496;
int[] resultArr = au.getPerfectNumbers(max);
assertResult(assertArray,resultArr);
}
@Test
public void testJoin() {
int[] array = {6,5,8,9};
String seperator = "*";
String resulStr = au.join(array, seperator);
String assertStr = "6*5*8*9";
Assert.assertEquals(assertStr, resulStr);
}
@Test
public void testObjList2int() {
ArrayList<Integer> ls = new ArrayList<>();
for (int i = 0; i < 10; i++) {
ls.add(i);
}
int[] resulArr = au.objList2int(ls);
Assert.assertEquals(ls.size(), resulArr.length);
for (int i = 0; i < resulArr.length; i++) {
Assert.assertEquals(i, resulArr[i]);
}
}
/**
* 断言方法
* @param assertArr 断言集合
* @param resultArr 实际集合
*/
private void assertResult(int[] assertArr,int[] resultArr){
Assert.assertEquals(assertArr.length,resultArr.length);
for (int i = 0; i < resultArr.length; i++) {
Assert.assertEquals(assertArr[i],resultArr[i]);
}
}
}