package mil.nga.giat.geowave.core.store.data.field;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
public class BasicReaderWriterTest
{
private Boolean booleanExpected;
private Boolean booleanNullExpected;
private Byte byteExpected;
private Short shortExpected;
private Short[] shortArrayExpected;
private short[] primShortArrayExpected;
private Float floatExpected;
private Float[] floatArrayExpected;
private float[] primFloatArrayExpected;
private Double doubleExpected;
private Double[] doubleArrayExpected;
private double[] primDoubleArrayExpected;
private BigDecimal bigDecimalExpected;
private Integer integerExpected;
private Integer[] intArrayExpected;
private int[] primIntArrayExpected;
private Long longExpected;
private Long[] longArrayExpected;
private long[] primLongArrayExpected;
private BigInteger bigIntegerExpected;
private String stringExpected;
private String[] stringArrayExpected;
private Byte[] byteArrayExpected;
private byte[] primByteArrayExpected;
private byte[] defaultNullExpected;
public static void main(
final String[] args ) {
final BasicReaderWriterTest tester = new BasicReaderWriterTest();
tester.init();
tester.testBasicReadWrite();
}
@Before
public void init() {
booleanExpected = Boolean.TRUE;
booleanNullExpected = Boolean.FALSE;
byteExpected = Byte.MIN_VALUE;
shortExpected = Short.MIN_VALUE;
shortArrayExpected = new Short[] {
Short.MIN_VALUE,
null,
Short.MAX_VALUE,
null
};
primShortArrayExpected = new short[] {
Short.MIN_VALUE,
Short.MAX_VALUE
};
floatExpected = Float.MIN_VALUE;
floatArrayExpected = new Float[] {
null,
Float.MIN_VALUE,
null,
Float.MAX_VALUE
};
primFloatArrayExpected = new float[] {
Float.MIN_VALUE,
Float.MAX_VALUE
};
doubleExpected = Double.MIN_VALUE;
doubleArrayExpected = new Double[] {
Double.MIN_VALUE,
null,
Double.MAX_VALUE,
null
};
primDoubleArrayExpected = new double[] {
Double.MIN_VALUE,
Double.MAX_VALUE
};
bigDecimalExpected = BigDecimal.TEN;
integerExpected = Integer.MIN_VALUE;
intArrayExpected = new Integer[] {
null,
Integer.MIN_VALUE,
null,
Integer.MAX_VALUE
};
primIntArrayExpected = new int[] {
Integer.MIN_VALUE,
Integer.MAX_VALUE
};
longExpected = Long.MIN_VALUE;
longArrayExpected = new Long[] {
Long.MIN_VALUE,
null,
Long.MAX_VALUE,
null
};
primLongArrayExpected = new long[] {
Long.MIN_VALUE,
Long.MAX_VALUE
};
bigIntegerExpected = BigInteger.valueOf(Long.MAX_VALUE);
stringExpected = this.getClass().getName();
stringArrayExpected = new String[] {
null,
this.getClass().getName(),
null,
String.class.getName()
};
byteArrayExpected = new Byte[] {
Byte.MIN_VALUE,
Byte.valueOf((byte) 55),
Byte.MAX_VALUE
};
primByteArrayExpected = new byte[] {
Byte.MIN_VALUE,
(byte) 33,
Byte.MAX_VALUE
};
defaultNullExpected = new byte[] {};
}
@Test
public void testBasicReadWrite() {
byte[] value;
// test Boolean reader/writer
value = FieldUtils.getDefaultWriterForClass(
Boolean.class).writeField(
booleanExpected);
final Boolean booleanActual = FieldUtils.getDefaultReaderForClass(
Boolean.class).readField(
value);
Assert.assertEquals(
"FAILED test of Boolean reader/writer",
booleanExpected.booleanValue(),
booleanActual.booleanValue());
// test Byte reader/writer
value = FieldUtils.getDefaultWriterForClass(
Byte.class).writeField(
byteExpected);
final Byte byteActual = FieldUtils.getDefaultReaderForClass(
Byte.class).readField(
value);
Assert.assertEquals(
"FAILED test of Byte reader/writer",
byteExpected.byteValue(),
byteActual.byteValue());
// test Short reader/writer
value = FieldUtils.getDefaultWriterForClass(
Short.class).writeField(
shortExpected);
final Short shortActual = FieldUtils.getDefaultReaderForClass(
Short.class).readField(
value);
Assert.assertEquals(
"FAILED test of Short reader/writer",
shortExpected.shortValue(),
shortActual.shortValue());
// test Short Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Short[].class).writeField(
shortArrayExpected);
final Short[] shortArrayActual = FieldUtils.getDefaultReaderForClass(
Short[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Short Array reader/writer",
Arrays.deepEquals(
shortArrayExpected,
shortArrayActual));
// test short Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
short[].class).writeField(
primShortArrayExpected);
final short[] primShortArrayActual = FieldUtils.getDefaultReaderForClass(
short[].class).readField(
value);
Assert.assertTrue(
"FAILED test of short Array reader/writer",
Arrays.equals(
primShortArrayExpected,
primShortArrayActual));
// test Float reader/writer
value = FieldUtils.getDefaultWriterForClass(
Float.class).writeField(
floatExpected);
final Float floatActual = FieldUtils.getDefaultReaderForClass(
Float.class).readField(
value);
Assert.assertEquals(
"FAILED test of Float reader/writer",
floatExpected,
floatActual);
// test Float Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Float[].class).writeField(
floatArrayExpected);
final Float[] floatArrayActual = FieldUtils.getDefaultReaderForClass(
Float[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Float Array reader/writer",
Arrays.deepEquals(
floatArrayExpected,
floatArrayActual));
// test float Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
float[].class).writeField(
primFloatArrayExpected);
final float[] primFloatArrayActual = FieldUtils.getDefaultReaderForClass(
float[].class).readField(
value);
Assert.assertTrue(
"FAILED test of float Array reader/writer",
Arrays.equals(
primFloatArrayExpected,
primFloatArrayActual));
// test Double reader/writer
value = FieldUtils.getDefaultWriterForClass(
Double.class).writeField(
doubleExpected);
final Double doubleActual = FieldUtils.getDefaultReaderForClass(
Double.class).readField(
value);
Assert.assertEquals(
"FAILED test of Double reader/writer",
doubleExpected,
doubleActual);
// test Double Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Double[].class).writeField(
doubleArrayExpected);
final Double[] doubleArrayActual = FieldUtils.getDefaultReaderForClass(
Double[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Double Array reader/writer",
Arrays.deepEquals(
doubleArrayExpected,
doubleArrayActual));
// test double Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
double[].class).writeField(
primDoubleArrayExpected);
final double[] primDoubleArrayActual = FieldUtils.getDefaultReaderForClass(
double[].class).readField(
value);
Assert.assertTrue(
"FAILED test of double Array reader/writer",
Arrays.equals(
primDoubleArrayExpected,
primDoubleArrayActual));
// test BigDecimal reader/writer
value = FieldUtils.getDefaultWriterForClass(
BigDecimal.class).writeField(
bigDecimalExpected);
final BigDecimal bigDecimalActual = FieldUtils.getDefaultReaderForClass(
BigDecimal.class).readField(
value);
Assert.assertEquals(
"FAILED test of BigDecimal reader/writer",
bigDecimalExpected,
bigDecimalActual);
// test Integer reader/writer
value = FieldUtils.getDefaultWriterForClass(
Integer.class).writeField(
integerExpected);
final Integer integerActual = FieldUtils.getDefaultReaderForClass(
Integer.class).readField(
value);
Assert.assertEquals(
"FAILED test of Integer reader/writer",
integerExpected,
integerActual);
// test Integer Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Integer[].class).writeField(
intArrayExpected);
final Integer[] intArrayActual = FieldUtils.getDefaultReaderForClass(
Integer[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Integer Array reader/writer",
Arrays.deepEquals(
intArrayExpected,
intArrayActual));
// test int Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
int[].class).writeField(
primIntArrayExpected);
final int[] primIntArrayActual = FieldUtils.getDefaultReaderForClass(
int[].class).readField(
value);
Assert.assertTrue(
"FAILED test of int Array reader/writer",
Arrays.equals(
primIntArrayExpected,
primIntArrayActual));
// test Long reader/writer
value = FieldUtils.getDefaultWriterForClass(
Long.class).writeField(
longExpected);
final Long longActual = FieldUtils.getDefaultReaderForClass(
Long.class).readField(
value);
Assert.assertEquals(
"FAILED test of Long reader/writer",
longExpected,
longActual);
// test Long Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Long[].class).writeField(
longArrayExpected);
final Long[] longArrayActual = FieldUtils.getDefaultReaderForClass(
Long[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Long Array reader/writer",
Arrays.deepEquals(
longArrayExpected,
longArrayActual));
// test long Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
long[].class).writeField(
primLongArrayExpected);
final long[] primLongArrayActual = FieldUtils.getDefaultReaderForClass(
long[].class).readField(
value);
Assert.assertTrue(
"FAILED test of long Array reader/writer",
Arrays.equals(
primLongArrayExpected,
primLongArrayActual));
// test BigInteger reader/writer
value = FieldUtils.getDefaultWriterForClass(
BigInteger.class).writeField(
bigIntegerExpected);
final BigInteger bigIntegerActual = FieldUtils.getDefaultReaderForClass(
BigInteger.class).readField(
value);
Assert.assertEquals(
"FAILED test of BigInteger reader/writer",
bigIntegerExpected,
bigIntegerActual);
// test String reader/writer
value = FieldUtils.getDefaultWriterForClass(
String.class).writeField(
stringExpected);
final String stringActual = FieldUtils.getDefaultReaderForClass(
String.class).readField(
value);
Assert.assertEquals(
"FAILED test of String reader/writer",
stringExpected,
stringActual);
// test String Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
String[].class).writeField(
stringArrayExpected);
final String[] stringArrayActual = FieldUtils.getDefaultReaderForClass(
String[].class).readField(
value);
Assert.assertTrue(
"FAILED test of String Array reader/writer",
Arrays.deepEquals(
stringArrayExpected,
stringArrayActual));
// test Byte [] reader/writer
value = FieldUtils.getDefaultWriterForClass(
Byte[].class).writeField(
byteArrayExpected);
final Byte[] byteArrayActual = FieldUtils.getDefaultReaderForClass(
Byte[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Byte [] reader/writer",
Arrays.deepEquals(
byteArrayExpected,
byteArrayActual));
// test byte [] reader/writer
value = FieldUtils.getDefaultWriterForClass(
byte[].class).writeField(
primByteArrayExpected);
final byte[] primByteArrayActual = FieldUtils.getDefaultReaderForClass(
byte[].class).readField(
value);
Assert.assertTrue(
"FAILED test of byte [] reader/writer",
Arrays.equals(
primByteArrayExpected,
primByteArrayActual));
}
@Test
public void testNullReadWrite() {
byte[] value;
// test Boolean reader/writer
value = FieldUtils.getDefaultWriterForClass(
Boolean.class).writeField(
null);
final Boolean booleanNullActual = FieldUtils.getDefaultReaderForClass(
Boolean.class).readField(
value);
Assert.assertEquals(
"FAILED null test of Boolean field writer/reader",
booleanNullExpected.booleanValue(),
booleanNullActual.booleanValue());
// test Byte reader/writer
value = FieldUtils.getDefaultWriterForClass(
Byte.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Byte field writer",
defaultNullExpected.length,
value.length);
final Byte byteActual = FieldUtils.getDefaultReaderForClass(
Byte.class).readField(
value);
Assert.assertEquals(
"FAILED null test of Byte field reader",
null,
byteActual);
// test Short reader/writer
value = FieldUtils.getDefaultWriterForClass(
Short.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Short writer",
defaultNullExpected.length,
value.length);
final Short shortActual = FieldUtils.getDefaultReaderForClass(
Short.class).readField(
value);
Assert.assertEquals(
"FAILED null test of Short reader",
null,
shortActual);
// test Short Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Short[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Short Array writer",
defaultNullExpected.length,
value.length);
final Short[] shortArrayActual = FieldUtils.getDefaultReaderForClass(
Short[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Short Array reader",
Arrays.deepEquals(
null,
shortArrayActual));
// test short Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
short[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of short Array writer",
defaultNullExpected.length,
value.length);
final short[] primShortArrayActual = FieldUtils.getDefaultReaderForClass(
short[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of short Array reader",
Arrays.equals(
null,
primShortArrayActual));
// test Float reader/writer
value = FieldUtils.getDefaultWriterForClass(
Float.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Float writer",
defaultNullExpected.length,
value.length);
final Float floatActual = FieldUtils.getDefaultReaderForClass(
Float.class).readField(
value);
Assert.assertEquals(
"FAILED null test of Float Array reader",
null,
floatActual);
// test Float Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Float[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Float Array writer",
defaultNullExpected.length,
value.length);
final Float[] floatArrayActual = FieldUtils.getDefaultReaderForClass(
Float[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of Float Array reader",
Arrays.deepEquals(
null,
floatArrayActual));
// // test float Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
float[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of float Array writer",
defaultNullExpected.length,
value.length);
final float[] primFloatArrayActual = FieldUtils.getDefaultReaderForClass(
float[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of float Array reader/writer",
Arrays.equals(
null,
primFloatArrayActual));
// test Double reader/writer
value = FieldUtils.getDefaultWriterForClass(
Double.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Double writer",
defaultNullExpected.length,
value.length);
final Double doubleActual = FieldUtils.getDefaultReaderForClass(
Double.class).readField(
value);
Assert.assertEquals(
"FAILED null test of Double reader",
null,
doubleActual);
// test Double Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Double[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Double Array writer",
defaultNullExpected.length,
value.length);
final Double[] doubleArrayActual = FieldUtils.getDefaultReaderForClass(
Double[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of Double Array reader",
Arrays.deepEquals(
null,
doubleArrayActual));
// test double Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
double[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of double Array writer",
defaultNullExpected.length,
value.length);
final double[] primDoubleArrayActual = FieldUtils.getDefaultReaderForClass(
double[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of double Array reader",
Arrays.equals(
null,
primDoubleArrayActual));
// test BigDecimal reader/writer
value = FieldUtils.getDefaultWriterForClass(
BigDecimal.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of BigDecimal writer",
defaultNullExpected.length,
value.length);
final BigDecimal bigDecimalActual = FieldUtils.getDefaultReaderForClass(
BigDecimal.class).readField(
value);
Assert.assertEquals(
"FAILED null test of BigDecimal reader",
null,
bigDecimalActual);
// test Integer reader/writer
value = FieldUtils.getDefaultWriterForClass(
Integer.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Integer writer",
defaultNullExpected.length,
value.length);
final Integer integerActual = FieldUtils.getDefaultReaderForClass(
Integer.class).readField(
value);
Assert.assertEquals(
"FAILED test of Integer reader",
null,
integerActual);
// test Integer Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Integer[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Integer Array writer",
defaultNullExpected.length,
value.length);
final Integer[] intArrayActual = FieldUtils.getDefaultReaderForClass(
Integer[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of Integer Array reader",
Arrays.deepEquals(
null,
intArrayActual));
// test int Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
int[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of int Array writer",
defaultNullExpected.length,
value.length);
final int[] primIntArrayActual = FieldUtils.getDefaultReaderForClass(
int[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of int Array reader",
Arrays.equals(
null,
primIntArrayActual));
// test Long reader/writer
value = FieldUtils.getDefaultWriterForClass(
Long.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Long writer",
defaultNullExpected.length,
value.length);
final Long longActual = FieldUtils.getDefaultReaderForClass(
Long.class).readField(
value);
Assert.assertEquals(
"FAILED test of Long reader",
null,
longActual);
// test Long Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
Long[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Long Array writer",
defaultNullExpected.length,
value.length);
final Long[] longArrayActual = FieldUtils.getDefaultReaderForClass(
Long[].class).readField(
value);
Assert.assertTrue(
"FAILED test of Long Array reader",
Arrays.deepEquals(
null,
longArrayActual));
// test long Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
long[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of long Array writer",
defaultNullExpected.length,
value.length);
final long[] primLongArrayActual = FieldUtils.getDefaultReaderForClass(
long[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of long Array reader/writer",
Arrays.equals(
null,
primLongArrayActual));
// test BigInteger reader/writer
value = FieldUtils.getDefaultWriterForClass(
BigInteger.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of BigInteger writer",
defaultNullExpected.length,
value.length);
final BigInteger bigIntegerActual = FieldUtils.getDefaultReaderForClass(
BigInteger.class).readField(
value);
Assert.assertEquals(
"FAILED null test of BigInteger reader",
null,
bigIntegerActual);
// test String reader/writer
value = FieldUtils.getDefaultWriterForClass(
String.class).writeField(
null);
Assert.assertEquals(
"FAILED null test of String writer",
defaultNullExpected.length,
value.length);
final String stringActual = FieldUtils.getDefaultReaderForClass(
String.class).readField(
value);
Assert.assertEquals(
"FAILED null test of String reader/writer",
null,
stringActual);
// test String Array reader/writer
value = FieldUtils.getDefaultWriterForClass(
String[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of String Array writer",
defaultNullExpected.length,
value.length);
final String[] stringArrayActual = FieldUtils.getDefaultReaderForClass(
String[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of String Array reader/writer",
Arrays.deepEquals(
null,
stringArrayActual));
// test Byte [] reader/writer
value = FieldUtils.getDefaultWriterForClass(
Byte[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of Byte [] writer",
defaultNullExpected.length,
value.length);
final Byte[] byteArrayActual = FieldUtils.getDefaultReaderForClass(
Byte[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of Byte [] reader",
Arrays.deepEquals(
null,
byteArrayActual));
// test byte [] reader/writer
value = FieldUtils.getDefaultWriterForClass(
byte[].class).writeField(
null);
Assert.assertEquals(
"FAILED null test of byte [] writer",
defaultNullExpected.length,
value.length);
final byte[] primByteArrayActual = FieldUtils.getDefaultReaderForClass(
byte[].class).readField(
value);
Assert.assertTrue(
"FAILED null test of byte [] reader/writer",
Arrays.equals(
null,
primByteArrayActual));
}
}