| /* |
| * Copyright (c) 2010, 2011, 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 6735275 6993561 |
| * @summary Test verifies that SampleModel.getSamples() SampleModel.setSamples() |
| * throw an appropriate exception if coordinates are not in bounds. |
| * |
| * @run main GetSamplesTest |
| */ |
| |
| import java.awt.image.BandedSampleModel; |
| import java.awt.image.ComponentSampleModel; |
| import java.awt.image.DataBuffer; |
| import java.awt.image.MultiPixelPackedSampleModel; |
| import java.awt.image.PixelInterleavedSampleModel; |
| import java.awt.image.SampleModel; |
| import java.awt.image.SinglePixelPackedSampleModel; |
| import java.util.Vector; |
| |
| public class GetSamplesTest { |
| |
| public static int width = 100; |
| public static int height = 100; |
| public static int dataType = DataBuffer.TYPE_BYTE; |
| public static int numBands = 4; |
| |
| public static void main(String[] args) { |
| Vector<Class<? extends SampleModel>> classes = new Vector<Class<? extends SampleModel>>(); |
| |
| classes.add(ComponentSampleModel.class); |
| classes.add(MultiPixelPackedSampleModel.class); |
| classes.add(SinglePixelPackedSampleModel.class); |
| classes.add(BandedSampleModel.class); |
| classes.add(PixelInterleavedSampleModel.class); |
| |
| for (Class<? extends SampleModel> c : classes) { |
| doTest(c); |
| } |
| } |
| private static void doTest(Class<? extends SampleModel> c) { |
| System.out.println("Test for: " + c.getName()); |
| SampleModel sm = createSampleModel(c); |
| |
| DataBuffer db = sm.createDataBuffer(); |
| |
| int[] iArray = new int[ width * height + numBands]; |
| float[] fArray = new float[ width * height + numBands]; |
| double[] dArray = new double[ width * height + numBands]; |
| |
| boolean iOk = false; |
| boolean fOk = false; |
| boolean dOk = false; |
| |
| try { |
| sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db); |
| sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, iArray, db); |
| } catch (ArrayIndexOutOfBoundsException e) { |
| System.out.println(e.getMessage()); |
| iOk = true; |
| } |
| |
| try { |
| sm.getSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db); |
| sm.setSamples(Integer.MAX_VALUE, 0, 1, 1, 0, fArray, db); |
| } catch (ArrayIndexOutOfBoundsException e) { |
| System.out.println(e.getMessage()); |
| fOk = true; |
| } |
| |
| try { |
| sm.getSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db); |
| sm.setSamples(0, Integer.MAX_VALUE, 1, 1, 0, dArray, db); |
| } catch (ArrayIndexOutOfBoundsException e) { |
| System.out.println(e.getMessage()); |
| dOk = true; |
| } |
| if (!iOk || !fOk || !dOk) { |
| throw new RuntimeException("Test for " + c.getSimpleName() + |
| " failed: iOk=" + iOk + "; fOk=" + fOk + "; dOk=" + dOk); |
| } |
| } |
| |
| private static SampleModel createSampleModel(Class<? extends SampleModel> cls) { |
| SampleModel res = null; |
| |
| if (cls == ComponentSampleModel.class) { |
| res = new ComponentSampleModel(dataType, width, height, 4, width * 4, new int[] { 0, 1, 2, 3 } ); |
| } else if (cls == MultiPixelPackedSampleModel.class) { |
| res = new MultiPixelPackedSampleModel(dataType, width, height, 4); |
| } else if (cls == SinglePixelPackedSampleModel.class) { |
| res = new SinglePixelPackedSampleModel(dataType, width, height, |
| new int[]{ 0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff }); |
| } else if (cls == BandedSampleModel.class) { |
| res = new BandedSampleModel(dataType, width, height, numBands); |
| } else if (cls == PixelInterleavedSampleModel.class) { |
| res = new PixelInterleavedSampleModel(dataType, width, height, 4, width * 4, new int[] { 0, 1, 2, 3 }); |
| } else { |
| throw new RuntimeException("Unknown class " + cls); |
| } |
| return res; |
| } |
| } |