final TransformSeparator s = new TransformSeparator(MathTransforms.identity(8)); try { s.getSourceDimensions(); fail("Shall not return unspecified dimensions."); } catch (IllegalStateException e) { assertArrayEquals("sourceDimensions", new int[] {1, 2, 3}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0, 3, 4}, s.getTargetDimensions()); try { assertArrayEquals("sourceDimensions", new int[] {1, 2, 3, 4, 6}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0, 3, 4, 6, 7}, s.getTargetDimensions()); try {
sep.setTrimSourceDimensions(true); gridToAOI = sep.separate(); modifiedDimensions = sep.getSourceDimensions(); if (modifiedDimensions.length != modifiedDimensionCount) { throw new TransformException(Resources.format(Resources.Keys.CanNotMapToGridDimensions));
assertFalse("trimSourceDimensions", s.getTrimSourceDimensions()); assertSame("No source dimensions should be trimmed if not requested.", tr, s.separate()); assertArrayEquals(new int[] {0, 1, 2}, s.getSourceDimensions()); assertArrayEquals(new int[] {0, 1 }, s.getTargetDimensions()); MathTransform reduced = s.separate(); assertNotEquals("separate()", tr, reduced); assertArrayEquals(new int[] {0, 1}, s.getSourceDimensions()); assertArrayEquals(new int[] {0, 1}, s.getTargetDimensions()); assertMatrixEquals("separate()", expected, MathTransforms.getMatrix(reduced), STRICT); reduced = s.separate(); assertNotEquals("separate()", tr, reduced); assertArrayEquals(new int[] {1, 2}, s.getSourceDimensions()); assertArrayEquals(new int[] {0, 1}, s.getTargetDimensions()); assertMatrixEquals("separate()", new Matrix3(
assertArrayEquals("sourceDimensions", new int[] {0, 1, 2, 3, 4, 5, 6}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0, 1, 2, 3, 4, 5, 6, 7}, s.getTargetDimensions()); s.addTargetDimensions(1, 2, 7); MathTransform result = s.separate(); assertArrayEquals("sourceDimensions", new int[] {0, 1, 2, 3, 4, 5, 6}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {1, 2, 7}, s.getTargetDimensions()); final Random random = TestUtilities.createRandomNumberGenerator(); s.addTargetDimensions(1, 5, 7); result = s.separate(); assertArrayEquals ("sourceDimensions", new int[] {0, 1, 2, 3, 4, 5, 6}, s.getSourceDimensions()); assertArrayEquals ("targetDimensions", new int[] {1, 5, 7}, s.getTargetDimensions()); assertInstanceOf ("separate()", LinearTransform.class, result); s.addSourceDimensions(0, 6); result = s.separate(); assertArrayEquals ("sourceDimensions", new int[] {0, 6}, s.getSourceDimensions()); assertArrayEquals ("targetDimensions", new int[] {0, 7}, s.getTargetDimensions()); assertInstanceOf ("separate()", LinearTransform.class, result); s.addSourceDimensions(1, 2, 3, 4, 5); result = s.separate(); assertArrayEquals("sourceDimensions", new int[] {1, 2, 3, 4, 5}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {1, 2, 3, 4, 5, 6}, s.getTargetDimensions()); assertInstanceOf ("separate()", PassThroughTransform.class, result);
assertArrayEquals("sourceDimensions", new int[] {0, 1, 2}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0, 1, 2}, s.getTargetDimensions()); s.addTargetDimensions(0, 2); assertMatrixEquals("transform", matrix, ((LinearTransform) s.separate()).getMatrix(), STRICT); assertArrayEquals("sourceDimensions", new int[] {0, 1, 2}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0, 2}, s.getTargetDimensions()); s.addSourceDimensions(1, 2); assertMatrixEquals("transform", matrix, ((LinearTransform) s.separate()).getMatrix(), STRICT); assertArrayEquals("sourceDimensions", new int[] {1, 2}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {1}, s.getTargetDimensions()); s.addTargetDimensions(0); assertMatrixEquals("transform", matrix, ((LinearTransform) s.separate()).getMatrix(), STRICT); assertArrayEquals("sourceDimensions", new int[] {0, 2}, s.getSourceDimensions()); assertArrayEquals("targetDimensions", new int[] {0}, s.getTargetDimensions());