package com.github.chaoswang.learning.java.array;
import org.junit.Assert;
import org.junit.Test;
public class ArrayUtilTest {
/**
* ����һ����������a , �Ը������ֵ�����û�
���磺 a = [7, 9 , 30, 3] , �û���Ϊ [3, 30, 9,7]
��� a = [7, 9, 30, 3, 4] , �û���Ϊ [4,3, 30 , 9,7]
* @param origin
* @return
*/
@Test
public void testReverseArray() {
int a[] = {7, 9, 30, 3};
int reversedA[] = {3, 30, 9, 7};
int b[] = {7, 9, 30, 3, 4};
int reversedB[] = {4, 3, 30, 9, 7};
Assert.assertArrayEquals(reversedA, ArrayUtil.reverseArray(a));
Assert.assertArrayEquals(reversedB, ArrayUtil.reverseArray(b));
}
/**
* ���������µ�һ�����飺 int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
* Ҫ������������ֵΪ0����ȥ��������Ϊ0��ֵ����һ���µ����飬���ɵ�������Ϊ��
* {1,3,4,5,6,6,5,4,7,6,7,5}
* @param oldArray
* @return
*/
@Test
public void testRemoveZero() {
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5};
Assert.assertArrayEquals(newArr, ArrayUtil.removeZero(oldArr));
}
/**
* ���������Ѿ�����õ��������飬 a1��a2 , ����һ���µ�����a3, ʹ��a3 ����a1��a2 ������Ԫ�أ� ������Ȼ�������
* ���� a1 = [3, 5, 7,8] a2 = [4, 5, 6,7] �� a3 Ϊ[3,4,5,6,7,8] , ע�⣺ �Ѿ��������ظ�
* @param array1
* @param array2
* @return
*/
@Test
public void testMerge() {
int a1[] = {3, 5, 7,8};
int a2[] = {4, 5, 6,7};
int a3[] = {3,4,5,6,7,8};
Assert.assertArrayEquals(a3, ArrayUtil.merge(a1, a2));
}
/**
* ��һ���Ѿ��������ݵ����� oldArray������������չ�� ��չ��������ݴ�СΪoldArray.length + size
* ע�⣬�������Ԫ��������������Ҫ����
* ���� oldArray = [2,3,6] , size = 3,�ص�������Ϊ
* [2,3,6,0,0,0]
* @param oldArray
* @param size
* @return
*/
@Test
public void testGrow() {
int oldArray[] = {2,3,6};
int newArray[] = {2,3,6,0,0,0};
Assert.assertArrayEquals(newArray, ArrayUtil.grow(oldArray, 3));
}
/**
* 쳲���������Ϊ��1��1��2��3��5��8��13��21...... ������һ�����ֵ�� ����С�ڸ�ֵ������
* ���磬 max = 15 , �ص�����Ӧ��Ϊ [1��1��2��3��5��8��13]
* max = 1, �ؿ����� []
* @param max
* @return
*/
@Test
public void testFibonacci() {
int returnA[] = {1,1,2,3,5,8,13};
int returnB[] = {};
int returnC[] = {1,1,2,3,5,8,13,21,34};
int returnD[] = {1,1,2};
Assert.assertArrayEquals(returnA, ArrayUtil.fibonacci(15));
Assert.assertArrayEquals(returnB, ArrayUtil.fibonacci(1));
Assert.assertArrayEquals(returnC, ArrayUtil.fibonacci(34));
Assert.assertArrayEquals(returnD, ArrayUtil.fibonacci(2));
}
/**
* ����С�ڸ������ֵmax��������������
* ����max = 23, ���ص�����Ϊ[2,3,5,7,11,13,17,19]
* @param max
* @return
*/
@Test
public void testGetPrimes() {
int returnC[] = {2,3,5,7,11,13,17,19};
int returnD[] = {2,3,5,7,11};
Assert.assertArrayEquals(returnC, ArrayUtil.getPrimes(23));
Assert.assertArrayEquals(returnD, ArrayUtil.getPrimes(12));
}
/**
* ��ν���������� ��ָ�����ǡ�õ�����������֮�ͣ�����6=1+2+3
* ����һ�����ֵmax�� ����һ�����飬 ��������С��max ����������
* @param max
* @return
*/
@Test
public void testGetPerfectNumbers() {
int returnC[] = {6,28,496};
int returnD[] = {6,28,496,8128};
int returnE[] = {6,28,496,8128,33550336};
Assert.assertArrayEquals(returnC, ArrayUtil.getPerfectNumbers(496));
Assert.assertArrayEquals(returnD, ArrayUtil.getPerfectNumbers(8129));
Assert.assertArrayEquals(returnE, ArrayUtil.getPerfectNumbers(33550337));
}
/**
* ��seperator ������ array����������
* ����array= [3,8,9], seperator = "-"
* ��ֵΪ"3-8-9"
* @param array
* @param s
* @return
*/
@Test
public void testJoin() {
int array[] = {3,8,9};
Assert.assertEquals("3-8-9", ArrayUtil.join(array,"-"));
Assert.assertEquals("3@$8@$9", ArrayUtil.join(array,"@$"));
}
}