1 /* 2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @bug 8182461 27 * @summary Test verifies that the 8BPP indexed color BMP image file is read properly 28 * @run main BMP8BPPLoadTest 29 * @author fairoz.matte 30 */ 31 import java.awt.image.BufferedImage; 32 import java.io.File; 33 import java.io.IOException; 34 import javax.imageio.ImageIO; 35 import java.io.ByteArrayInputStream; 36 37 public class BMP8BPPLoadTest { 38 39 public BMP8BPPLoadTest() throws IOException { 40 try { 41 ImageIO.read(ImageIO.createImageInputStream(new ByteArrayInputStream(BMP8BPPIMAGE))); 42 System.out.println("Test Passed ImageIO.read able to read the file"); 43 } catch (IndexOutOfBoundsException iobe) { 44 System.out.println("Test Failed with ImageIO.read throwing IndexOutOfBoundsException"); 45 throw new RuntimeException("Test failed: ImageIO.read throwing IndexOutOfBoundsException"); 46 } 47 } 48 49 50 public static void main(String args[]) throws IOException{ 51 BMP8BPPLoadTest test = new BMP8BPPLoadTest(); 52 } 53 54 public static byte[] BMP8BPPIMAGE = { 55 (byte)0x42, (byte)0x4d, (byte)0x1a, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 56 (byte)0x00, (byte)0x00, (byte)0xca, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x7c, (byte)0x00, 57 (byte)0x00, (byte)0x00, (byte)0x0f, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x0a, (byte)0x00, 58 (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x00, (byte)0x00, 59 (byte)0x00, (byte)0x00, (byte)0x50, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x13, (byte)0x0b, 60 (byte)0x00, (byte)0x00, (byte)0x13, (byte)0x0b, (byte)0x00, (byte)0x00, (byte)0x10, (byte)0x00, 61 (byte)0x00, (byte)0x00, (byte)0x10, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 62 (byte)0xff, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0x00, 63 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0x42, (byte)0x47, 64 (byte)0x52, (byte)0x73, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 65 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 66 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 67 (byte)0xc0, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0xff, 68 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 69 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x40, (byte)0x00, (byte)0x00, 70 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 71 (byte)0x00, (byte)0x00, (byte)0x04, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 72 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 73 (byte)0x00, (byte)0x00, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 74 (byte)0xff, (byte)0x00, (byte)0xff, (byte)0x00, (byte)0xfc, (byte)0x00, (byte)0x00, (byte)0xff, 75 (byte)0x00, (byte)0x00, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0x00, (byte)0x00, (byte)0x00, 76 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 77 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 78 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 79 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 80 (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, 81 (byte)0x00, (byte)0x00, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 82 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 83 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 84 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 85 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 86 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 87 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 88 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 89 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 90 (byte)0x11, (byte)0x10, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, (byte)0x11, 91 (byte)0x11, (byte)0x10 92 }; 93 }