/* * Copyright (c) 2001, 2017, 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 4429934 4429950 4430991 4430993 * @summary Checks various aspects of ImageTypeSpecifier functionality */ import java.awt.color.ColorSpace; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.DataBuffer; import java.awt.image.SampleModel; import javax.imageio.ImageTypeSpecifier; public class ImageTypeSpecifierTest { private static void fail(String message) { throw new RuntimeException(message); } private static void test4429934() { try { ImageTypeSpecifier itspecifier = new ImageTypeSpecifier(null, null); fail("Failed to get IAE!"); } catch( IllegalArgumentException e ) { } try { ImageTypeSpecifier itspecifier = new ImageTypeSpecifier(null); fail("Failed to get IAE!"); } catch (IllegalArgumentException e ) { } } private static void test4429950() { createPackedTest(); createInterleavedTest(); createBandedTest(); createIndexedTest(); } public static void createPackedTest() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int rmask = 0x00ff0000; int gmask = 0x0000ff00; int bmask = 0x000000ff; int amask = 0xff000000; try { ImageTypeSpecifier.createPacked(null, rmask, gmask, bmask, amask, 0, false); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } ColorSpace cs1 = ColorSpace.getInstance(ColorSpace.CS_GRAY); try { ImageTypeSpecifier.createPacked (cs1, rmask, gmask, bmask, amask, 0, false); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createPacked(cs, 0, 0, 0, 0, 0, false); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createPacked(cs, rmask, gmask, bmask, amask, -1, false); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } public static void createInterleavedTest() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] bandOffsets = {0,0,0,0}; int dataType = 0; boolean hasAlpha = true; boolean isAlphaPremultiplied = true; try { ImageTypeSpecifier.createInterleaved (null, bandOffsets, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createInterleaved (cs, null, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } int[] bad_bandOffsets = {0,100,1000}; try { ImageTypeSpecifier.createInterleaved (cs, bad_bandOffsets, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } int[] bad_bandOffsets_1 = {}; try { ImageTypeSpecifier.createInterleaved (cs, bad_bandOffsets_1, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } public static void createBandedTest() { ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_sRGB); int[] bankIndices = {0, 100, 1000, 10000}; int[] bandOffsets = {0, 100, 1000, 10000}; int dataType = 0; boolean hasAlpha = true; boolean isAlphaPremultiplied = true; try { ImageTypeSpecifier.createBanded(null, bankIndices, bandOffsets, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } int[] bad_bankIndices = {}; int[] bad_bandOffsets = {}; try { ImageTypeSpecifier.createBanded(cs, bad_bankIndices, bad_bandOffsets, dataType, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createBanded(cs, bankIndices, bandOffsets, 99999, hasAlpha, isAlphaPremultiplied); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } public static void createGrayscaleTest() { int bits = 8; int dataType = DataBuffer.TYPE_BYTE; boolean isSigned = true; // testcase 1 try { ImageTypeSpecifier.createGrayscale(100, dataType, isSigned); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createGrayscale(10, dataType, isSigned); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createGrayscale(bits, 100, isSigned); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } public static void createIndexedTest() { byte[] redLUT = {0}; byte[] greenLUT = {0}; byte[] blueLUT = {0}; byte[] alphaLUT = {0}; int bits = 8; int dataType = DataBuffer.TYPE_BYTE; try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT, 0, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT, 17, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT, 10, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } byte[] greenLUT_4 = {}; try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT_4, blueLUT, alphaLUT, bits, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } byte[] redLUT_5 = {}; try { ImageTypeSpecifier.createIndexed(redLUT_5, greenLUT, blueLUT, alphaLUT, bits, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } byte[] alphaLUT_6 = {}; try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT_6 , bits, dataType); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { ImageTypeSpecifier.createIndexed(redLUT, greenLUT, blueLUT, alphaLUT , bits, 100); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } private static void test4430991() { ImageTypeSpecifier itspecifier; itspecifier = ImageTypeSpecifier.createFromBufferedImageType (BufferedImage.TYPE_INT_RGB); try { itspecifier.createBufferedImage(Integer.MAX_VALUE, Integer.MAX_VALUE); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } try { itspecifier.getSampleModel(Integer.MAX_VALUE, Integer.MAX_VALUE); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } private static void test4430993() { ImageTypeSpecifier itspecifier; int bits = 32; int rmask = 0x00ff0000; int gmask = 0x0000ff00; int bmask = 0x000000ff; ColorModel dcm = new java.awt.image.DirectColorModel (bits, rmask, gmask, bmask); int[] bandOffsets = new int[2]; bandOffsets[1] = 1; SampleModel sm = new java.awt.image.ComponentSampleModel (DataBuffer.TYPE_SHORT, 1, 1, 2, 2, bandOffsets); try { itspecifier = new ImageTypeSpecifier(dcm, sm); fail("Failed to get IAE!"); } catch (IllegalArgumentException e) { } } public static void main(String[] args) { try { test4429934(); test4429950(); test4430991(); test4430993(); } catch (RuntimeException e) { throw e; } catch (Exception e) { e.printStackTrace(); System.out.println("Unexpected exception: " + e); } } }