package com.coderising.array; import org.junit.Assert; import org.junit.Test; /** * ArrayUtil test * * Created by Korben on 26/02/2017. */ public class ArrayUtilTest { @Test public void reverseArray() throws Exception { // test reverse even number { int[] testArray = new int[5]; for (int i = 0; i < 5; i++) { testArray[i] = i; } ArrayUtil.reverseArray(testArray); for (int i = 0; i < 5; i++) { Assert.assertEquals(5 - 1 - i, testArray[i]); } } // test reverse odd number { int[] testArray = new int[4]; for (int i = 0; i < 4; i++) { testArray[i] = i; } ArrayUtil.reverseArray(testArray); for (int i = 0; i < 4; i++) { Assert.assertEquals(4 - 1 - i, testArray[i]); } } } @Test public void removeZero() throws Exception { // 测试非空数组 { int[] testArray = new int[20]; for (int i = 0; i < 20; i++) { if (i % 5 == 0) { testArray[i] = 0; } else { testArray[i] = i; } } int[] newArray = ArrayUtil.removeZero(testArray); Assert.assertNotNull(newArray); for (int i = 0; i < 20; i++) { if (i % 5 == 0) { continue; } Assert.assertEquals(testArray[i], i); } } // 测试空数组 { int[] testArray = new int[5]; for (int i = 0; i < 5; i++) { testArray[i] = 0; } int[] newArray = ArrayUtil.removeZero(testArray); Assert.assertNotNull(newArray); Assert.assertEquals(newArray.length, 0); } } @Test public void merge() throws Exception { // 构建数组 int[] array1 = new int[10]; int[] array2 = new int[11]; array2[10] = 100; for (int i = 0; i < 10; i++) { if (i % 2 == 0) { array1[i / 2] = i; // 0, 2, 4, 6, 8 } else { array2[i / 2] = i; // 1, 3, 5, 7, 9 } } for (int i = 10; i < 15; i++) { array1[i - 5] = i; // 10, 11, 12, 13, 14, 15 array2[i - 5] = i; // 10, 11, 12, 13, 14, 15 } // 测试merge { int[] merge = ArrayUtil.merge(array1, array2); Assert.assertNotNull(merge); Assert.assertEquals(merge.length, 16); for (int i = 0; i < 15; i++) { Assert.assertEquals(merge[i], i); } Assert.assertEquals(merge[15], 100); } // 调换数组顺序 { int[] merge = ArrayUtil.merge(array2, array1); Assert.assertNotNull(merge); Assert.assertEquals(merge.length, 16); for (int i = 0; i < 15; i++) { Assert.assertEquals(merge[i], i); } Assert.assertEquals(merge[15], 100); } // 测试空数组 { int[] array3 = new int[0]; int[] merge1 = ArrayUtil.merge(array1, array3); Assert.assertArrayEquals(merge1, array1); int[] merge2 = ArrayUtil.merge(array3, array1); Assert.assertArrayEquals(merge2, array1); } // 测试相同数组 { int[] merge = ArrayUtil.merge(array1, array1); Assert.assertArrayEquals(merge, array1); } } @Test public void grow() throws Exception { int[] oldArray = new int[5]; for (int i = 0; i < 5; i++) { oldArray[i] = i; } int[] newArray = ArrayUtil.grow(oldArray, 5); for (int i = 0; i < 10; i++) { if (i < 5) { Assert.assertEquals(newArray[i], i); } else { Assert.assertEquals(newArray[i], 0); } } } @Test public void fibonacci() throws Exception { int[] fibonacciArray = {1, 1, 2, 3, 5, 8, 13, 21}; int[] calculatedFibonacci = ArrayUtil.fibonacci(22); Assert.assertArrayEquals(fibonacciArray, calculatedFibonacci); } @Test public void getPrimes() throws Exception { int[] expected = {2, 3, 5, 7, 11, 13, 17, 19}; int[] primes = ArrayUtil.getPrimes(23); Assert.assertArrayEquals(primes, expected); } @Test public void getPerfectNumbers() throws Exception { int[] perfectNumbers = {6, 28, 496, 8128}; int[] calculatedPerfectNumbers = ArrayUtil.getPerfectNumbers(8220); Assert.assertArrayEquals(perfectNumbers, calculatedPerfectNumbers); } @Test public void join() throws Exception { { int[] array = {1}; String joinStr = ArrayUtil.join(array, "-"); Assert.assertEquals("1", joinStr); } { int[] array = {1, 2, 3}; String joinStr = ArrayUtil.join(array, "-"); Assert.assertEquals("1-2-3", joinStr); } } }