package com.bc.util.math;
import junit.framework.TestCase;
public class MathUtilsTest extends TestCase {
public void testClipToThreeDigits() {
final double input_1 = 123.456789;
final double expected_1 = 123.456;
final double input_2 = 0.45346346;
final double expected_2 = 0.453;
final double input_3 = -78.993453;
final double expected_3 = -78.993;
double result = MathUtils.clipToThreeDigits(input_1);
assertEquals(expected_1, result, 1e-8);
result = MathUtils.clipToThreeDigits(input_2);
assertEquals(expected_2, result, 1e-8);
result = MathUtils.clipToThreeDigits(input_3);
assertEquals(expected_3, result, 1e-8);
}
public void testIntToByteArray() {
byte[] result = MathUtils.intToByteArray(4);
assertEquals(0, result[0]);
assertEquals(0, result[1]);
assertEquals(0, result[2]);
assertEquals(4, result[3]);
result = MathUtils.intToByteArray(128);
assertEquals(0, result[0]);
assertEquals(0, result[1]);
assertEquals(0, result[2]);
assertEquals(-128, result[3]);
result = MathUtils.intToByteArray(196734);
assertEquals(0, result[0]);
assertEquals(3, result[1]);
assertEquals(0, result[2]);
assertEquals(126, result[3]);
result = MathUtils.intToByteArray(23196734);
assertEquals(1, result[0]);
assertEquals(97, result[1]);
assertEquals(-12, result[2]);
assertEquals(62, result[3]);
}
public void testByteArrayToInt() {
int result = MathUtils.byteArrayToInt(new byte[] {0, 0, 2, 2});
assertEquals(514, result);
result = MathUtils.byteArrayToInt(new byte[] {0, 1, 0, 127});
assertEquals(65663, result);
result = MathUtils.byteArrayToInt(new byte[] {4, 0, -18, 127});
assertEquals(67169919, result);
}
public void testByteArrayToInt_exceptionWhenArrayTooShort() {
try {
MathUtils.byteArrayToInt(new byte[]{1, 2, 3});
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException expected) {
}
}
public void testByteArrayIntConversionIsReversible() {
final byte[] start = new byte[] {1, 34, -124, 19};
final int intResult = MathUtils.byteArrayToInt(start);
assertEquals(19039251, intResult);
final byte[] byteResult = MathUtils.intToByteArray(intResult);
assertEquals(4, byteResult.length);
for (int i = 0; i < byteResult.length; i++) {
assertEquals(start[i], byteResult[i]);
}
}
public void testByteArrayToIntArray() {
byte[] input = new byte[] {1, 34, -124, 19, 1, 34, -124, 20};
int[] result = MathUtils.byteArrayToIntArray(input);
assertEquals(2, result.length);
assertEquals(19039251, result[0]);
assertEquals(19039252, result[1]);
input = new byte[] {0, 0, 2, 2};
result = MathUtils.byteArrayToIntArray(input);
assertEquals(1, result.length);
assertEquals(514, result[0]);
input = new byte[] {0, 0, 2, 2, 0, 1, 2, 2};
result = MathUtils.byteArrayToIntArray(input);
assertEquals(2, result.length);
assertEquals(514, result[0]);
assertEquals(66050, result[1]);
input = new byte[] {0, 0, 2, 2, 0, 1, 2, 2, 0, 0, 2, 0};
result = MathUtils.byteArrayToIntArray(input);
assertEquals(3, result.length);
assertEquals(514, result[0]);
assertEquals(66050, result[1]);
assertEquals(512, result[2]);
}
public void testByteArrayToIntArray_inputArrayTooShort() {
try {
MathUtils.byteArrayToIntArray(new byte[] {1,3});
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException expected) {
}
}
}