| /* | |
| * Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved. | |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| * | |
| * This code is free software; you can redistribute it and/or modify it | |
| * under the terms of the GNU General Public License version 2 only, as | |
| * published by the Free Software Foundation. | |
| * | |
| * This code is distributed in the hope that it will be useful, but WITHOUT | |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| * version 2 for more details (a copy is included in the LICENSE file that | |
| * accompanied this code). | |
| * | |
| * You should have received a copy of the GNU General Public License version | |
| * 2 along with this work; if not, write to the Free Software Foundation, | |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| * | |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| * or visit www.oracle.com if you need additional information or have any | |
| * questions. | |
| */ | |
| /* | |
| * @test | |
| * @bug 8255800 | |
| * @summary verify Raster + SampleModel creation vs spec. | |
| */ | |
| import java.awt.Point; | |
| import java.awt.image.BandedSampleModel; | |
| import java.awt.image.ComponentSampleModel; | |
| import java.awt.image.DataBuffer; | |
| import java.awt.image.DataBufferByte; | |
| import java.awt.image.DataBufferFloat; | |
| import java.awt.image.Raster; | |
| import java.awt.image.RasterFormatException; | |
| public class CreateRasterExceptionTest { | |
| static int[] bankIndices = new int[] { 0, 0}; | |
| static int[] negBankIndices = new int[] { -1, 0}; | |
| static int[] bandOffsets = new int[] { 0, 0}; | |
| static int[] bandOffsets2 = new int[] { 0, 0, 0, 0}; | |
| static int[] zeroBandOffsets = new int[] {}; | |
| static DataBuffer dBuffer = new DataBufferByte(15); | |
| static void noException() { | |
| Thread.dumpStack(); | |
| throw new RuntimeException("No expected exception"); | |
| } | |
| /* Except a version starting with "17" or higher */ | |
| static void checkIsOldVersion(Throwable t) { | |
| String version = System.getProperty("java.version"); | |
| version = version.split("\\D")[0]; | |
| int v = Integer.parseInt(version); | |
| if (v >= 17) { | |
| t.printStackTrace(); | |
| throw new RuntimeException( | |
| "Unexpected exception for version " + v); | |
| } | |
| } | |
| public static void main(String[] args) { | |
| componentSampleModelTests1(); | |
| componentSampleModelTests2(); | |
| bandedSampleModelTests1(); | |
| bandedSampleModelTests2(); | |
| bandedRasterTests1(); | |
| bandedRasterTests2(); | |
| bandedRasterTests3(); | |
| interleavedRasterTests1(); | |
| interleavedRasterTests2(); | |
| interleavedRasterTests3(); | |
| System.out.println(); | |
| System.out.println(" ** Test Passed **"); | |
| } | |
| /* public ComponentSampleModel(int dataType, | |
| * int w, int h, | |
| * int pixelStride, | |
| * int scanlineStride, | |
| * int[] bandOffsets); | |
| */ | |
| static void componentSampleModelTests1() { | |
| System.out.println(); | |
| System.out.println("** componentSampleModelTests1"); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, -5, 1, 3, 15, | |
| bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative width"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE / 2, Integer.MAX_VALUE / 2, | |
| 3, 15, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for exceeding max int"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code pixelStride} | |
| * is less than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, -3, 15, | |
| bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative pixel stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, -15, | |
| bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} is | |
| * {@code null} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| bankIndices, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code bandOffsets.length}is 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| bankIndices, zeroBandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for 0 bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| new ComponentSampleModel(-1234, 5, 1, 3, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* public ComponentSampleModel(int dataType, | |
| * int w, int h, | |
| * int pixelStride, | |
| * int scanlineStride, | |
| * int[] bankIndices, | |
| * int[] bandOffsets); | |
| */ | |
| static void componentSampleModelTests2() { | |
| System.out.println(); | |
| System.out.println("** componentSampleModelTests2"); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} | |
| * and {@code h} are not both greater than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, -5, 1, 3, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative width"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE / 2, Integer.MAX_VALUE / 2, | |
| 3, 15, bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for exceeding max int"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code pixelStride} | |
| * is less than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, -3, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative pixel stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, -15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* | |
| * @throws NullPointerException if {@code bankIndices} | |
| * is {@code null} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| null, bandOffsets); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bankIndices"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} is | |
| * {@code null} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| bankIndices, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code bandOffsets.length} is 0 | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| bankIndices, zeroBandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for 0 bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the length of | |
| * {@code bankIndices} does not equal the length of | |
| * {@code bandOffsets} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| bankIndices, bandOffsets2); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for " + | |
| "bandOffsets.length != bankIndices.length"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the length of | |
| * {@code bankIndices} does not equal the length of | |
| * {@code bandOffsets} | |
| */ | |
| new ComponentSampleModel(DataBuffer.TYPE_INT, 5, 1, 3, 15, | |
| negBankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for " + | |
| "negative bank Index"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| new ComponentSampleModel(-1234, 5, 1, 3, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* public BandedSampleModel(int dataType, int w, int h, | |
| * int numBands); | |
| */ | |
| static void bandedSampleModelTests1() { | |
| System.out.println(); | |
| System.out.println("** bandedSampleModelTests1"); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, -5, 1, 1); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative width"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE / 2, Integer.MAX_VALUE / 2, 1); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for exceeding max int"); | |
| System.out.println(t); | |
| } | |
| /* Testing this both with 0 and negative (next test) */ | |
| try { | |
| /* @throws IllegalArgumentException if {@code numBands} | |
| * is <= 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 0); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for 0 numBands"); | |
| System.out.println(t); | |
| } | |
| /* Before JDK 17, a negative value for num bands would throw | |
| * NegativeArraySizeException, but a zero value would throw | |
| * IllegalArgumentException so allow NegativeArraySizeException | |
| * on < 17 here to make it easier to run this test on both | |
| * versions and verify all behaviours. | |
| */ | |
| try { | |
| /* @throws IllegalArgumentException if {@code numBands} | |
| * is <= 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, -1); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for < 0 numBands"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println( | |
| "Got expected exception for < 0 numBands"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} | |
| * is not one of the supported data types for this | |
| * sample model | |
| */ | |
| new BandedSampleModel(-1234, 5, 1, 3); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* | |
| * public BandedSampleModel(int dataType, | |
| * int w, int h, | |
| * int scanlineStride, | |
| * int[] bankIndices, | |
| * int[] bandOffsets); | |
| */ | |
| static void bandedSampleModelTests2() { | |
| System.out.println(); | |
| System.out.println("** bandedSampleModelTests2"); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, -5, 1, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative width"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE / 8, Integer.MAX_VALUE / 8, | |
| Integer.MAX_VALUE, bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for exceeding max int"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, -15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* | |
| * @throws NullPointerException if {@code bankIndices} | |
| * is {@code null} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 15, | |
| null, bandOffsets); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bankIndices"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} is | |
| * {@code null} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 15, | |
| bankIndices, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code bandOffsets.length} is 0 | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 15, | |
| bankIndices, zeroBandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for 0 bandOffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the length of | |
| * {@code bankIndices} does not equal the length of | |
| * {@code bandOffsets} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 15, | |
| bankIndices, bandOffsets2); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for " + | |
| "bandOffsets.length != bankIndices.length"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the length of | |
| * {@code bankIndices} does not equal the length of | |
| * {@code bandOffsets} | |
| */ | |
| new BandedSampleModel(DataBuffer.TYPE_INT, 5, 1, 15, | |
| negBankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for " + | |
| "negative bank Index"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| new BandedSampleModel(-1234, 5, 1, 15, | |
| bankIndices, bandOffsets); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* createBandedRaster(int dataType, int w, int h, | |
| * int bands, Point location); | |
| */ | |
| static void bandedRasterTests1() { | |
| System.out.println(); | |
| System.out.println("** bandedRasterTests1"); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| /* Old API had @throws RasterFormatException if w or h < 0 | |
| * Old JDK never actually does. And it is worse. | |
| * If one or the other is zero, we get IAE. | |
| * If one is positive, the other negative | |
| * we get NegativeArraySizeException. | |
| * If BOTH are negative, we are back to IAE. | |
| * This needs to be consistent. | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| 1, -1, 3, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, 3, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE-2, 1, 1, pt); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException | OutOfMemoryError t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws ArrayIndexOutOfBoundsException if {@code bands} | |
| * is less than 1 | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| 1, 1, 0, null); | |
| noException(); | |
| } catch (ArrayIndexOutOfBoundsException t) { | |
| System.out.println("Got expected exception for zero bands"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_FLOAT, | |
| 5, 1, 3, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* | |
| * createBandedRaster(int dataType, | |
| * int w, int h, | |
| * int scanlineStride, | |
| * int[] bankIndices, | |
| * int[] bandOffsets, | |
| * Point location) | |
| */ | |
| static void bandedRasterTests2() { | |
| System.out.println(); | |
| System.out.println("** bandedRasterTests2"); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| /* Old API had @throws RasterFormatException if w or h < 0 | |
| * Old JDK never actually does. And it is worse. | |
| * If one or the other * is zero, we get IAE. | |
| * If one is positive, the other negative | |
| * we get NegativeArraySizeException. | |
| * If BOTH are negative, we are back to IAE. | |
| * This needs to be consistent. | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, 1, -1, 3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, | |
| Integer.MAX_VALUE, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, | |
| Integer.MAX_VALUE-2, 1, | |
| Integer.MAX_VALUE-2, bankIndices, bandOffsets, pt); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, 1, 1, -3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws ArrayIndexOutOfBoundsException if | |
| * {@code bankIndices} is null | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, 1, 1, 0, | |
| null, bandOffsets, null); | |
| noException(); | |
| } catch (ArrayIndexOutOfBoundsException t) { | |
| System.out.println( | |
| "Got expected exception for null bankIndices"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} | |
| * is null | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_INT, 1, 1, 0, | |
| bankIndices, null, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandoffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| Raster.createBandedRaster(DataBuffer.TYPE_FLOAT, 5, 1, 3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* | |
| * createBandedRaster(DataBuffer dataBuffer, | |
| * int w, int h, | |
| * int scanlineStride, | |
| * int[] bankIndices, | |
| * int[] bandOffsets, | |
| * Point location) | |
| */ | |
| static void bandedRasterTests3() { | |
| System.out.println(); | |
| System.out.println("** bandedRasterTests3"); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} and | |
| * {@code h} are not both greater than 0 | |
| */ | |
| Raster.createBandedRaster(dBuffer, 1, -1, 3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createBandedRaster(dBuffer, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, | |
| Integer.MAX_VALUE, bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| } | |
| try { | |
| /* @throws RasterFormatException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createBandedRaster(dBuffer, | |
| Integer.MAX_VALUE-2, 1, Integer.MAX_VALUE, | |
| bankIndices, bandOffsets, pt); | |
| noException(); | |
| } catch (RasterFormatException t) { | |
| System.out.println( | |
| "Got expected raster exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| Raster.createBandedRaster(dBuffer, 1, 1, -3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bankIndices} | |
| * is null | |
| */ | |
| Raster.createBandedRaster(dBuffer, 1, 1, 0, | |
| null, bandOffsets, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bankIndices"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code dataBuffer} | |
| * is null | |
| */ | |
| Raster.createBandedRaster(null, 1, 1, 3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null dataBuffer"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the length of | |
| * {@code bankIndices} does not equal the length of | |
| * {@code bandOffsets} | |
| */ | |
| Raster.createBandedRaster(dBuffer, 1, 1, 3, | |
| bankIndices, bandOffsets2, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for different arrlen"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} | |
| * is null | |
| */ | |
| Raster.createBandedRaster(dBuffer, 1, 1, 0, | |
| bankIndices, null, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandoffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* | |
| * @throws IllegalArgumentException if {@code dataType} | |
| * is not one of the supported data types, which are | |
| * {@code DataBuffer.TYPE_BYTE}, | |
| * {@code DataBuffer.TYPE_USHORT} | |
| * or {@code DataBuffer.TYPE_INT}, | |
| */ | |
| DataBufferFloat dbFloat = new DataBufferFloat(20); | |
| Raster.createBandedRaster(dbFloat, 1, 1, 3, | |
| bankIndices, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad dataBuffer"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* createInterleavedRaster(int dataType, int w, int h, | |
| * int bands, Point location); | |
| */ | |
| static void interleavedRasterTests1() { | |
| System.out.println(); | |
| System.out.println("** interleavedRasterTests1"); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} | |
| * and {@code h} are not both greater than 0 | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, -1, 3, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, 1, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws RasterFormatException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| Integer.MAX_VALUE-2, 1, 1, pt); | |
| noException(); | |
| } catch (RasterFormatException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code bands} | |
| * is less than 1 | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, 1, 0, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception zero bands"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_INT, | |
| 5, 1, 3, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* createInterleavedRaster(int dataType, | |
| * int w, int h, | |
| * int scanlineStride, | |
| * int pixelStride, | |
| * int[] bandOffsets, | |
| * Point location) | |
| */ | |
| static void interleavedRasterTests2() { | |
| System.out.println(); | |
| System.out.println("** interleavedRasterTests2 "); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} | |
| * and {@code h} are not both greater than 0 | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, -1, 3, 1, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, | |
| Integer.MAX_VALUE/2 , 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws RasterFormatException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| Integer.MAX_VALUE-2, 1, | |
| Integer.MAX_VALUE, 1, bandOffsets, pt); | |
| noException(); | |
| } catch (RasterFormatException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if | |
| * {@code scanlineStride} is less than 0 | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, 1, -3, 1, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code pixelStride} | |
| * is less than 0 | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, 1, 3, -1, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for pixelStride < 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| checkIsOldVersion(t); | |
| System.out.println( | |
| "Got expected exception for pixelStride < 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} | |
| * is null | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, | |
| 1, 1, 0, 1, null, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandoffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataType} is | |
| * not one of the supported data types for this sample model | |
| */ | |
| Raster.createInterleavedRaster(DataBuffer.TYPE_INT, | |
| 5, 1, 3, 1, bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| /* createInterleavedRaster(DataBuffer dBuffer, | |
| * int w, int h, | |
| * int scanlineStride, | |
| * int pixelStride, | |
| * int[] bandOffsets, | |
| * Point location) | |
| */ | |
| static void interleavedRasterTests3() { | |
| System.out.println(); | |
| System.out.println("** interleavedRasterTests3 "); | |
| Point p = new Point(); | |
| try { | |
| /* @throws IllegalArgumentException if {@code w} | |
| * and {@code h} are not both greater than 0 | |
| */ | |
| Raster.createInterleavedRaster(dBuffer, 1, -1, 3, 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for width <= 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if the product of | |
| * {@code w} and {@code h} is greater than | |
| * {@code Integer.MAX_VALUE} | |
| */ | |
| Raster.createInterleavedRaster(dBuffer, | |
| Integer.MAX_VALUE/8, Integer.MAX_VALUE/8, | |
| Integer.MAX_VALUE/4, 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws RasterFormatException if computing either | |
| * {@code location.x + w} or | |
| * {@code location.y + h} results in integer overflow | |
| */ | |
| Point pt = new Point(5, 1); | |
| Raster.createInterleavedRaster(dBuffer, | |
| Integer.MAX_VALUE-2, 1, | |
| Integer.MAX_VALUE, 1, bandOffsets, pt); | |
| noException(); | |
| } catch (RasterFormatException t) { | |
| System.out.println("Got expected exception for overflow"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException | |
| * if {@code scanlineStride} is less than 0 | |
| */ | |
| Raster.createInterleavedRaster(dBuffer, 5, 1, -15, 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for negative scanline stride"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code pixelStride} | |
| * is less than 0 | |
| */ | |
| Raster.createInterleavedRaster(dBuffer, 5, 1, 15, -1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for pixelStride < 0"); | |
| System.out.println(t); | |
| } catch (NegativeArraySizeException t) { | |
| if (t != null) throw t; | |
| checkIsOldVersion(t); | |
| System.out.println( | |
| "Got expected exception for pixelStride < 0"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws NullPointerException if {@code bandOffsets} | |
| * is null | |
| */ | |
| Raster.createInterleavedRaster(dBuffer, 5, 1, 15, 1, | |
| null, null); | |
| noException(); | |
| } catch (NullPointerException t) { | |
| System.out.println( | |
| "Got expected exception for null bandoffsets"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws IllegalArgumentException if {@code dataBuffer} | |
| * is not one of the supported data types | |
| */ | |
| DataBufferFloat dbFloat = new DataBufferFloat(20); | |
| Raster.createInterleavedRaster(dbFloat, 5, 1, 15, 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (IllegalArgumentException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| try { | |
| /* @throws RasterFormatException if {@code dataBuffer} | |
| * has more than one bank. | |
| */ | |
| DataBufferByte dbb = new DataBufferByte(100, 2); | |
| Raster.createInterleavedRaster(dbb, 5, 1, 15, 1, | |
| bandOffsets, null); | |
| noException(); | |
| } catch (RasterFormatException t) { | |
| System.out.println( | |
| "Got expected exception for bad databuffer type"); | |
| System.out.println(t); | |
| } | |
| } | |
| } |