blob: 015b00d15c9731b002785054220425bbe4af80d8 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.internal.util;
import static org.apache.geode.internal.util.ArrayUtils.asList;
import static org.apache.geode.internal.util.ArrayUtils.getElementAtIndex;
import static org.apache.geode.internal.util.ArrayUtils.getFirst;
import static org.apache.geode.internal.util.ArrayUtils.toByteArray;
import static org.apache.geode.internal.util.ArrayUtils.toBytes;
import static org.apache.geode.internal.util.ArrayUtils.toIntegerArray;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
/**
* Unit tests for {@link ArrayUtils}.
*
* @since GemFire 7.x
*/
@SuppressWarnings("null")
public class ArrayUtilsTest {
@Rule
public TestName testName = new TestName();
@Test
public void testGetElementAtIndex() {
Object[] arrayOfThree = new Object[] {"test", "testing", "tested"};
assertThat(getElementAtIndex(arrayOfThree, 0, null)).isEqualTo("test");
assertThat(getElementAtIndex(arrayOfThree, 1, null)).isEqualTo("testing");
assertThat(getElementAtIndex(arrayOfThree, 2, null)).isEqualTo("tested");
}
@Test
public void getElementAtIndex_emptyArray_returnsDefaultValue() {
Object[] emptyArray = new Object[] {};
String defaultValue = this.testName.getMethodName();
assertThat(getElementAtIndex(emptyArray, 0, defaultValue)).isEqualTo(defaultValue);
}
@Test
public void getElementAtIndex_emptyArray_returnsNullDefaultValue() {
Object[] emptyArray = new Object[] {};
assertThat(getElementAtIndex(emptyArray, 0, null)).isNull();
}
@Test
public void getElementAtIndex_indexOutOfBounds_returnsDefaultValue() {
Object[] arrayOfOne = new Object[] {"test"};
String defaultValue = this.testName.getMethodName();
assertThat(getElementAtIndex(arrayOfOne, 2, defaultValue)).isEqualTo(defaultValue);
}
@Test
public void getElementAtIndex_empty_indexOutOfBounds_returnsDefaultValue() {
Object[] emptyArray = new Object[] {};
String defaultValue = this.testName.getMethodName();
assertThat(getElementAtIndex(emptyArray, 2, defaultValue)).isEqualTo(defaultValue);
}
@Test
public void getFirst_array_returnsFirstElement() {
assertThat(getFirst("first", "second", "third")).isEqualTo("first");
}
@Test
public void getFirst_arrayContainingNull_returnsFirstElement() {
assertThat(getFirst("null", "nil", null)).isEqualTo("null");
}
@Test
public void getFirst_oneElement_returnsFirstElement() {
assertThat(getFirst("test")).isEqualTo("test");
}
@Test
public void getFirst_null_returnsNull() {
Object nullObject = null;
assertThat(getFirst(nullObject)).isNull();
}
@Test
public void getFirst_empty_returnsNull() {
Object[] emptyArray = new Object[0];
assertThat((Object[]) getFirst(emptyArray)).isNull();
}
@Test
public void getFirst_arrayOfNullValues_returnsNull() {
assertThat((Object) getFirst(null, null, null)).isNull();
}
@Test
public void toString_returnsOrderedStringInBrackets() {
Object[] arrayOfThree = new Object[] {"test", "testing", "tested"};
assertThat(ArrayUtils.toString(arrayOfThree)).isEqualTo("[test, testing, tested]");
}
@Test
public void toString_empty_returnsEmptyBrackets() {
assertThat(ArrayUtils.toString((new Object[0]))).isEqualTo("[]");
}
@Test
public void toString_null_returnsEmptyBrackets() {
assertThat(ArrayUtils.toString((Object[]) null)).isEqualTo("[]");
}
@Test
public void toIntegerArray_returnsOrderedArray() {
int[] sequence = new int[] {0, 1, 2, 4, 8};
assertThat(toIntegerArray(sequence)).isNotNull().hasSize(sequence.length).containsExactly(0, 1,
2, 4, 8);
}
@Test
public void toIntegerArray_empty_returnsEmptyArray() {
assertThat(toIntegerArray(new int[] {})).isNotNull().hasSize(0);
}
@Test
public void toIntegerArray_null_returnsEmptyArray() {
assertThat(toIntegerArray(null)).isNotNull().hasSize(0);
}
@Test
public void toByteArray_returnsBytes() {
int count = 0;
byte[][] array = new byte[10][5];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = (byte) ++count;
}
}
assertThat(count).isEqualTo(50);
count = 0;
Byte[][] byteArray = toByteArray(array);
for (int i = 0; i < byteArray.length; i++) {
for (int j = 0; j < byteArray[i].length; j++) {
assertThat(byteArray[i][j].byteValue()).isEqualTo((byte) ++count);
}
}
assertThat(count).isEqualTo(50);
}
@Test
public void toBytes_returnsPrimitiveBytes() {
int count = 100;
Byte[][] byteArray = new Byte[5][10];
for (int i = 0; i < byteArray.length; i++) {
for (int j = 0; j < byteArray[i].length; j++) {
byteArray[i][j] = (byte) --count;
}
}
assertThat(count).isEqualTo(50);
count = 100;
byte[][] array = toBytes(byteArray);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
assertThat(array[i][j]).isEqualTo((byte) --count);
}
}
assertThat(count).isEqualTo(50);
}
@Test
public void toByteArray_empty_returnsEmptyBytes() {
byte[][] array = new byte[0][0];
assertThat(toByteArray(array)).isEqualTo(new Byte[0][0]);
}
@Test
public void toByteArray_null_returnsNull() {
byte[][] array = null;
assertThat(toByteArray(array)).isNull();
}
@Test
public void toBytes_empty_returnsEmpty() {
Byte[][] byteArray = new Byte[0][0];
assertThat(toBytes(byteArray)).isEqualTo(new byte[0][0]);
}
@Test
public void toBytes_null_returnsNull() {
Byte[][] byteArray = null;
assertThat(toBytes(byteArray)).isNull();
}
@Test
public void asList_returnsModifiableList() throws Exception {
List<String> modifiable = asList("Larry", "Moe", "Curly");
assertThat(modifiable.remove("Curly")).isTrue();
assertThat(modifiable).contains("Larry", "Moe").doesNotContain("Curly");
}
}