< prev index next >
test/javax/imageio/plugins/shared/BitDepth.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2016, 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.
@@ -21,15 +21,15 @@
* questions.
*/
/**
* @test
- * @bug 4413109 4418221 6607198
+ * @bug 4413109 4418221 6607198 8147448
* @run main BitDepth
- * @summary Checks that the PNG and JPEG writers can handle various
- * BufferedImage types. An optional list of arguments may be used to
- * test a different format writer or writers.
+ * @summary Checks that ImageIO writers for standard formats can handle
+ * various BufferedImage RGB types. An optional list of arguments
+ * may be used to test the writers for a different list of formats.
*/
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
@@ -79,25 +79,23 @@
private static final int[] biRGBTypes = {
BufferedImage.TYPE_INT_RGB,
BufferedImage.TYPE_INT_BGR,
BufferedImage.TYPE_3BYTE_BGR,
BufferedImage.TYPE_USHORT_565_RGB,
- BufferedImage.TYPE_USHORT_555_RGB
- };
-
- private static final int[] biRGBATypes = {
+ BufferedImage.TYPE_USHORT_555_RGB,
BufferedImage.TYPE_INT_ARGB,
BufferedImage.TYPE_INT_ARGB_PRE,
BufferedImage.TYPE_4BYTE_ABGR,
BufferedImage.TYPE_4BYTE_ABGR_PRE
};
- private static final int[] biGrayTypes = {
- BufferedImage.TYPE_BYTE_GRAY,
- BufferedImage.TYPE_USHORT_GRAY,
- BufferedImage.TYPE_BYTE_BINARY
- };
+ //private static final int[] biGrayTypes = {
+ // BufferedImage.TYPE_BYTE_GRAY,
+ // BufferedImage.TYPE_USHORT_GRAY,
+ // BufferedImage.TYPE_BYTE_BINARY
+ //};
+
private static final String[] biTypeNames = {
"CUSTOM",
"INT_RGB",
"INT_ARGB",
@@ -114,11 +112,11 @@
"BYTE_INDEXED"
};
private int width = 80;
private int height = 80;
- private String[] format = { "png", "jpeg" };
+ private String[] format = { "png", "jpeg", "tif", "bmp", "gif" };
public BitDepth(String[] args) throws IOException {
if (args.length > 0) {
format = args;
}
@@ -127,24 +125,44 @@
testFormat(format[i]);
}
}
private void testFormat(String format) throws IOException {
+
boolean allOK = true;
for (int i = 0; i < biRGBTypes.length; i++) {
+
int type = biRGBTypes[i];
+
+
+ // TODO: remove the following 'if' block after the 8147448 fix
+ if ( format.toLowerCase().equals("bmp") && (
+ (type == BufferedImage.TYPE_INT_ARGB ) ||
+ (type == BufferedImage.TYPE_INT_ARGB_PRE ) ||
+ (type == BufferedImage.TYPE_4BYTE_ABGR ) ||
+ (type == BufferedImage.TYPE_4BYTE_ABGR_PRE ))) {
+
+ System.err.println("cannot use " + biTypeNames[type] +
+ " for bmp because of JDK-8147448.\t" +
+ " please update the test after fix of this bug!");
+ continue;
+ }
+
+
System.out.println("Testing " + format +
" writer for type " + biTypeNames[type]);
File f = testWriteRGB(format, type);
boolean ok = testReadRGB(f);
if (ok) {
f.delete();
}
allOK = allOK && ok;
}
+
+
if (format.equals("png")) {
System.out.println("Testing png writer for black stripe");
boolean ok = testPNGByteBinary();
allOK = allOK && ok;
}
@@ -152,12 +170,12 @@
if (!allOK) {
throw new RuntimeException("Test failed");
}
}
- private File testWriteRGB(String format, int type)
- throws IOException {
+ private File testWriteRGB(String format, int type) throws IOException {
+
BufferedImage bi = new BufferedImage(width, height, type);
Graphics2D g = bi.createGraphics();
Color white = new Color(255, 255, 255);
Color red = new Color(255, 0, 0);
< prev index next >