public class getScaleFactors implements Testlet
{
public void test(TestHarness harness)
{
RescaleOp op = new RescaleOp(1, 1, null);
harness.check(Arrays.equals(op.getScaleFactors(null), new float[]{1}));
op = new RescaleOp(new float[]{1}, new float[]{1}, null);
harness.check(Arrays.equals(op.getScaleFactors(null), new float[]{1}));
float[] flt = new float[]{1, 2, 3, 4, 5};
op = new RescaleOp(flt, flt, null);
harness.check(op.getScaleFactors(null) != flt);
harness.check(Arrays.equals(op.getScaleFactors(null),
new float[]{1, 2, 3, 4, 5}));
// Mismatched array sizes...
op = new RescaleOp(flt, new float[]{1, 2}, null);
harness.check(op.getScaleFactors(null).length == 2);
harness.check(op.getScaleFactors(null)[0] == 1);
harness.check(op.getScaleFactors(null)[1] == 2);
// Try passing in an array to be populated
op = new RescaleOp(flt, flt, null);
float[] arr = new float[5];
harness.check(Arrays.equals(op.getScaleFactors(arr), arr));
harness.check(Arrays.equals(arr, flt));
// What if the array is too big?
arr = new float[10];
Arrays.fill(arr, 25);
op.getScaleFactors(arr);
for (int i = 0; i < 5; i++)
harness.check(arr[i] == flt[i]);
for (int i = 5; i < arr.length; i++)
harness.check(arr[i] == 25);
// What if array is too small?
arr = new float[2];
try
{
harness.check(op.getScaleFactors(arr).length == 2);
harness.check(op.getScaleFactors(arr)[0] == 1);
harness.check(op.getScaleFactors(arr)[1] == 2);
}
catch (ArrayIndexOutOfBoundsException ex)
{
harness.check(false);
}