@Test
public void testIntegerArray() {

	// check single field extraction
	for (int i = 0; i < testIntegerArray.length; i++) {
		Integer[] tmp = { testIntegerArray[i] };
		arrayEqualityCheck(tmp,
				new FieldsFromArray<Integer>(Integer.class, i).extract(testIntegerArray));
	}
	// check reverse order
	Integer[] reverseOrder = new Integer[testIntegerArray.length];
	for (int i = 0; i < testIntegerArray.length; i++) {
		reverseOrder[i] = testIntegerArray[testIntegerArray.length - i - 1];
	}
	arrayEqualityCheck(reverseOrder,
			new FieldsFromArray<Integer>(Integer.class, 4, 3, 2, 1, 0)
					.extract(testIntegerArray));
	// check picking fields and reorder
	Integer[] crazyOrder = { testIntegerArray[4], testIntegerArray[1], testIntegerArray[2] };
	arrayEqualityCheck(crazyOrder,
			new FieldsFromArray<Integer>(Integer.class, 4, 1, 2).extract(testIntegerArray));
}