*
* @param harness the test harness (<code>null</code> not permitted).
*/
public void test(TestHarness harness)
{
SinglePixelPackedSampleModel m1 = new SinglePixelPackedSampleModel(
DataBuffer.TYPE_BYTE, 2, 2, new int[] { 0xF0, 0x0F }
);
DataBufferByte db = new DataBufferByte(new byte[] { (byte) 0x12, (byte) 0x34, (byte) 0xAB, (byte) 0xCD }, 4);
// check regular fetch
int[] samples = m1.getPixels(0, 0, 1, 2, (int[]) null, db);
harness.check(samples[0], 0x01); // 1
harness.check(samples[1], 0x02); // 2
harness.check(samples[2], 0x0A); // 3
harness.check(samples[3], 0x0B); // 4
// check regular fetch with negative x
try
{
samples = m1.getPixels(-1, 0, 1, 1, (int[]) null, db);
harness.check(false);
}
catch (ArrayIndexOutOfBoundsException e)
{
harness.check(true);
}
// check regular fetch with negative y
try
{
samples = m1.getPixels(0, -1, 1, 1, (int[]) null, db);
harness.check(false);
}
catch (ArrayIndexOutOfBoundsException e)
{
harness.check(true);
}
// check regular fetch with w < 0
try
{
samples = m1.getPixels(0, 0, -1, 1, (int[]) null, db);
harness.check(false);
}
catch (NegativeArraySizeException e)
{
harness.check(true);
}
catch (ArrayIndexOutOfBoundsException e)
{
harness.check(true);
}
// check regular fetch with h < 0
try
{
samples = m1.getPixels(0, 0, 1, -1, (int[]) null, db);
harness.check(false);
}
catch (NegativeArraySizeException e)
{
harness.check(true);
}
catch (ArrayIndexOutOfBoundsException e)
{
harness.check(true);
}
// check regular fetch with presupplied array
int[] samplesIn = new int[4];
int[] samplesOut = m1.getPixels(1, 0, 1, 2, samplesIn, db);
harness.check(samplesIn == samplesOut);
harness.check(samplesOut[0], 0x03);
harness.check(samplesOut[1], 0x04);
harness.check(samplesOut[2], 0x0C);
harness.check(samplesOut[3], 0x0D);
// check regular fetch with presupplied array too short
int[] samplesIn2 = new int[1];
try
{
/* int[] samplesOut2 = */ m1.getPixels(1, 1, 1, 2, samplesIn2, db);
harness.check(false);
}
catch (ArrayIndexOutOfBoundsException e)
{
harness.check(true);
}
// check null data buffer
try
{
samples = m1.getPixels(0, 0, 1, 1, (int[]) null, null);
harness.check(false);
}
catch (NullPointerException e)
{
harness.check(true);
}
// check other array types
try
{
float[] samples1 = m1.getPixels(0, 0, 1, 1, (float[]) null, db);
harness.check(true);
}
catch (NullPointerException e)
{
harness.check(false);