/*
* Copyright 2016 NAVER Corp.
*
* Licensed 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 com.navercorp.pinpoint.common.util;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Woonduk Kang(emeroad)
*/
public class ArrayUtilsTest {
private final Logger logger = LoggerFactory.getLogger(ArrayUtilsTest.class.getName());
@Test
public void abbreviateSmall() {
byte[] bytes = new byte[]{1, 2, 3, 4};
String small = ArrayUtils.abbreviate(bytes, 3);
Assert.assertEquals("[1, 2, 3, ...(1)]", small);
}
@Test
public void abbreviateEqual() {
byte[] bytes = new byte[]{1, 2, 3, 4};
String equals = ArrayUtils.abbreviate(bytes, 4);
Assert.assertEquals("[1, 2, 3, 4]", equals);
}
@Test
public void abbreviateLarge() {
byte[] bytes = new byte[]{1, 2, 3, 4};
String large = ArrayUtils.abbreviate(bytes, 11);
Assert.assertEquals("[1, 2, 3, 4]", large);
}
@Test
public void abbreviateOneAndZero() {
byte[] bytes = new byte[]{1, 2, 3, 4};
String one = ArrayUtils.abbreviate(bytes, 1);
Assert.assertEquals("[1, ...(3)]", one);
String zero = ArrayUtils.abbreviate(bytes, 0);
Assert.assertEquals("[...(4)]", zero);
}
@Test
public void abbreviateSingle() {
byte[] bytes = new byte[]{1};
String small = ArrayUtils.abbreviate(bytes, 1);
logger.debug(small);
Assert.assertEquals("[1]", small);
}
@Test
public void abbreviateNegative() {
byte[] bytes = new byte[]{1};
try {
ArrayUtils.abbreviate(bytes, -1);
Assert.fail();
} catch (Exception ignored) {
}
}
@Test
public void abbreviate() {
//null test
Assert.assertTrue(ArrayUtils.abbreviate(null).equals("null"));
//zero-sized array test
byte[] bytes_zero = new byte[0];
Assert.assertEquals("[]", ArrayUtils.abbreviate(bytes_zero));
//small buffer with default limit
byte[] bytes_short = new byte[4];
for (int i = 0; i < 4; i++) {
bytes_short[i] = 'A';
}
Assert.assertEquals("[65, 65, 65, 65]", ArrayUtils.abbreviate(bytes_short));
//big buffer with small limit
byte[] bytes = new byte[256];
for (int i = 0; i < 4; i++) {
bytes[i] = 'A';
}
for (int i = 4; i < 256; i++) {
bytes[i] = 'B';
}
String answer = "[";
for (int i = 0; i < 4; i++) {
answer = answer + "65, ";
}
for (int i = 4; i < 16; i++) {
answer = answer + "66, ";
}
answer = answer + "...(240)]";
Assert.assertEquals(answer, ArrayUtils.abbreviate(bytes, 16));
//big buffer with big limit
answer = "[";
for (int i = 0; i < 4; i++) {
answer = answer + "65, ";
}
for (int i = 4; i < 255; i++) {
answer = answer + "66, ";
}
answer = answer + "66]";
Assert.assertEquals(answer, ArrayUtils.abbreviate(bytes, 256));
//big buffer with default limit
answer = "[";
for (int i = 0; i < 4; i++) {
answer = answer + "65, ";
}
for (int i = 4; i < 32; i++) {
answer = answer + "66, ";
}
answer = answer + "...(224)]";
Assert.assertEquals(answer, ArrayUtils.abbreviate(bytes));
}
}