package com.johnChnia.coderising2017.array;
import org.junit.Before;
import org.junit.Test;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.junit.MatcherAssert.assertThat;
/**
* Created by john on 2017/3/16.
*/
public class ArrayUtilTest {
private ArrayUtil arrayUtil;
private int[] array1;
private int[] array2;
private int[] array3;
private int[] array4;
private int[] array5;
private int[] array6;
@Before
public void setUp() throws Exception {
arrayUtil = new ArrayUtil();
array1 = new int[]{7, 9, 30, 3};
array2 = new int[]{1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
array3 = new int[]{3, 5, 7, 8};
array4 = new int[]{4, 5, 6, 7};
array5 = new int[]{2, 3, 6};
array6 = new int[]{2, 3, 5, 7, 11, 13, 17, 19};
}
@Test
public void testReverseArray() throws Exception {
arrayUtil.reverseArray(array1);
assertThat(array1[0], equalTo(3));
assertThat(array1[1], equalTo(30));
assertThat(array1[2], equalTo(9));
assertThat(array1[3], equalTo(7));
}
@Test
public void testRemoveZero() throws Exception {
int[] newArray = arrayUtil.removeZero(array2);
for (int element :
newArray) {
assertThat(element, not(0));
}
}
@Test
public void testMerge() throws Exception {
int[] newArray = arrayUtil.merge(array3, array4);
assertThat(newArray[0], equalTo(3));
assertThat(newArray[1], equalTo(4));
assertThat(newArray[2], equalTo(5));
assertThat(newArray[3], equalTo(6));
assertThat(newArray[4], equalTo(7));
assertThat(newArray[5], equalTo(8));
}
@Test
public void testGrow() throws Exception {
int[] newArray = arrayUtil.grow(array5, 3);
assertThat(newArray[0], equalTo(2));
assertThat(newArray[1], equalTo(3));
assertThat(newArray[2], equalTo(6));
assertThat(newArray[3], equalTo(0));
assertThat(newArray[4], equalTo(0));
assertThat(newArray[5], equalTo(0));
}
@Test
public void testFibonacci() throws Exception {
int[] newArray = arrayUtil.fibonacci(15);
assertThat(newArray[0], equalTo(1));
assertThat(newArray[1], equalTo(1));
assertThat(newArray[2], equalTo(2));
assertThat(newArray[3], equalTo(3));
assertThat(newArray[4], equalTo(5));
assertThat(newArray[5], equalTo(8));
assertThat(newArray[6], equalTo(13));
}
@Test
public void testGetPrimes() throws Exception {
int[] newArray = arrayUtil.getPrimes(23);
assertThat(newArray[0], equalTo(2));
assertThat(newArray[1], equalTo(3));
assertThat(newArray[2], equalTo(5));
assertThat(newArray[3], equalTo(7));
assertThat(newArray[4], equalTo(11));
assertThat(newArray[5], equalTo(13));
assertThat(newArray[6], equalTo(17));
assertThat(newArray[7], equalTo(19));
}
@Test
public void testGetPerfectNumbers() throws Exception {
int[] newArray = arrayUtil.getPerfectNumbers(100);
assertThat(newArray.length, equalTo(2));
assertThat(newArray[0], equalTo(6));
assertThat(newArray[1], equalTo(28));
}
@Test
public void testJoin() throws Exception {
assertThat(arrayUtil.join(array6, "-"),
containsString("2-3-5-7-11-13-17-19"));
}
}