提交 3bb5c89d 编写于 作者: P pnarayanan

8187113: test/javax/imageio/plugins/png/PngCreationTimeTest.java fails

Reviewed-by: serb, psadhukhan
Contributed-by: prahalad.kumar.narayanan@oracle.com
上级 c45b9ec2
......@@ -23,7 +23,7 @@
/*
* @test
* @bug 8164971
* @bug 8164971 8187113
* @summary The test decodes a png file and checks if the metadata contains
* image creation time. In addition, the test also merges the custom
* metadata tree (both standard and native) and succeeds when the
......@@ -55,6 +55,7 @@ public class PngCreationTimeTest {
private static IIOMetadata pngMetadata = null;
public static void initializeTest() throws IOException {
Iterator<ImageReader> iterR = null;
ImageReader pngImageReader = null;
BufferedImage decImage = null;
ImageInputStream imageStream = null;
......@@ -62,25 +63,43 @@ public class PngCreationTimeTest {
String separator = System.getProperty("file.separator");
String dirPath = System.getProperty("test.src", ".");
String filePath = dirPath + separator + fileName;
File file = new File(filePath);
File file = null;
try {
Iterator<ImageReader> iterR = ImageIO.getImageReadersBySuffix("PNG");
// Open the required file and check if file exists.
file = new File(filePath);
if (file != null && !file.exists()) {
reportExceptionAndFail("Test Failed. Required image file was"
+ " not found.");
}
// Get PNG image reader
iterR = ImageIO.getImageReadersBySuffix("PNG");
if (iterR.hasNext()) {
pngImageReader = iterR.next();
ImageReadParam param = pngImageReader.getDefaultReadParam();
imageStream = ImageIO.createImageInputStream(file);
/*
* Last argument- false, informs reader not to ignore the
* metadata from the image file
*/
pngImageReader.setInput(imageStream, false, false);
decImage = pngImageReader.read(0, param);
pngMetadata = pngImageReader.getImageMetadata(0);
// Check if the metadata contains creation time
testImageMetadata(pngMetadata);
if (imageStream != null) {
// Last argument informs reader not to ignore metadata
pngImageReader.setInput(imageStream,
false,
false);
decImage = pngImageReader.read(0, param);
pngMetadata = pngImageReader.getImageMetadata(0);
if (pngMetadata != null) {
// Check if the metadata contains creation time
testImageMetadata(pngMetadata);
} else {
reportExceptionAndFail("Test Failed. Reader could not"
+ " generate image metadata.");
}
} else {
reportExceptionAndFail("Test Failed. Could not initialize"
+ " image input stream.");
}
} else {
reportExceptionAndFail("Test Failed. Required image reader"
+ " was not found.");
}
} finally {
// Release ther resources
......@@ -103,14 +122,16 @@ public class PngCreationTimeTest {
Node keyNode = findNode(metadata.getAsTree("javax_imageio_1.0"),
"ImageCreationTime");
if (keyNode == null) {
throw new RuntimeException("Test Failed: Reader could not"
+ " find creation time in the metadata");
reportExceptionAndFail("Test Failed: Could not find image"
+ " creation time in the metadata.");
}
}
}
public static void testSaveCreationTime() throws IOException {
File file = null;
Iterator<ImageWriter> iterW = null;
Iterator<ImageReader> iterR = null;
ImageWriter pngImageWriter = null;
ImageReader pngImageReader = null;
ImageInputStream inputStream = null;
......@@ -127,39 +148,60 @@ public class PngCreationTimeTest {
// Create a temporary file for the output png image
String fileName = "RoundTripTest";
file = File.createTempFile(fileName, ".png");
if (file == null) {
reportExceptionAndFail("Test Failed. Could not create a"
+ " temporary file for round trip test.");
}
// Create a PNG writer and write test image with metadata
Iterator<ImageWriter> iterW = ImageIO.getImageWritersBySuffix("PNG");
iterW = ImageIO.getImageWritersBySuffix("PNG");
if (iterW.hasNext()) {
pngImageWriter = iterW.next();
outputStream = ImageIO.createImageOutputStream(file);
pngImageWriter.setOutput(outputStream);
// Get the default metadata & add image creation time to it.
IIOMetadata metadata = pngImageWriter.getDefaultImageMetadata(
ImageTypeSpecifier.createFromRenderedImage(buffImage),
null);
IIOMetadataNode root = createStandardMetadataNodeTree();
metadata.mergeTree("javax_imageio_1.0", root);
// Write a png image using buffImage & metadata
IIOImage iioImage = new IIOImage(buffImage, null, metadata);
pngImageWriter.write(iioImage);
if (outputStream != null) {
pngImageWriter.setOutput(outputStream);
// Get the default metadata & add image creation time to it.
ImageTypeSpecifier imgType =
ImageTypeSpecifier.createFromRenderedImage(buffImage);
IIOMetadata metadata =
pngImageWriter.getDefaultImageMetadata(imgType, null);
IIOMetadataNode root = createStandardMetadataNodeTree();
metadata.mergeTree("javax_imageio_1.0", root);
// Write a png image using buffImage & metadata
IIOImage iioImage = new IIOImage(buffImage, null, metadata);
pngImageWriter.write(iioImage);
} else {
reportExceptionAndFail("Test Failed. Could not initialize"
+ " image output stream for round trip test.");
}
} else {
reportExceptionAndFail("Test Failed. Could not find required"
+ " image writer for the round trip test.");
}
// Create a PNG reader and check if metadata was written
Iterator<ImageReader> iterR = ImageIO.getImageReadersBySuffix("PNG");
iterR = ImageIO.getImageReadersBySuffix("PNG");
if (iterR.hasNext()) {
pngImageReader = iterR.next();
inputStream = ImageIO.createImageInputStream(file);
// Read the image and get the metadata
pngImageReader.setInput(inputStream, false, false);
pngImageReader.read(0);
IIOMetadata imgMetadata = pngImageReader.getImageMetadata(0);
// Test if the metadata contains creation time.
testImageMetadata(imgMetadata);
if (inputStream != null) {
// Read the image and get the metadata
pngImageReader.setInput(inputStream, false, false);
pngImageReader.read(0);
IIOMetadata imgMetadata =
pngImageReader.getImageMetadata(0);
// Test if the metadata contains creation time.
testImageMetadata(imgMetadata);
} else {
reportExceptionAndFail("Test Failed. Could not initialize"
+ " image input stream for round trip test.");
}
} else {
reportExceptionAndFail("Test Failed. Cound not find the"
+ " required image reader.");
}
} finally {
// Release the resources held
......@@ -182,6 +224,11 @@ public class PngCreationTimeTest {
}
}
public static void reportExceptionAndFail(String message) {
// A common method to report exception.
throw new RuntimeException(message);
}
public static void testMergeNativeTree() {
// Merge a custom native metadata tree and inspect creation time
if (pngMetadata != null) {
......@@ -195,7 +242,6 @@ public class PngCreationTimeTest {
pngMetadata.mergeTree("javax_imageio_png_1.0", root);
Node keyNode = findNode(pngMetadata.getAsTree("javax_imageio_1.0"),
"ImageCreationTime");
if (keyNode != null) {
// Query the attributes of the node and check for the value
NamedNodeMap attrMap = keyNode.getAttributes();
......@@ -204,17 +250,17 @@ public class PngCreationTimeTest {
int decYear = Integer.parseInt(attrValue);
if (decYear != 2014) {
// Throw exception. Incorrect year value observed
throw new RuntimeException("Test Failed: Incorrect"
+ " creation time value observed");
reportExceptionAndFail("Test Failed: Incorrect"
+ " creation time value observed.");
}
} else {
// Throw exception.
throw new RuntimeException("Test Failed: Image creation"
+ "time doesn't exist in metadata");
reportExceptionAndFail("Test Failed: Image creation"
+ " time doesn't exist in metadata.");
}
} catch (IOException ex) {
// Throw exception.
throw new RuntimeException("Test Failed: While executing"
reportExceptionAndFail("Test Failed: While executing"
+ " mergeTree on metadata.");
}
}
......@@ -246,16 +292,16 @@ public class PngCreationTimeTest {
if (!attrValue.contains("2016")) {
// Throw exception. Incorrect year value observed
throw new RuntimeException("Test Failed: Incorrect"
+ " creation time value observed");
+ " creation time value observed.");
}
} else {
// Throw exception.
throw new RuntimeException("Test Failed: Image creation"
+ "time doesn't exist in metadata");
reportExceptionAndFail("Test Failed: Image creation"
+ " time doesn't exist in metadata.");
}
} catch (IOException ex) {
// Throw exception.
throw new RuntimeException("Test Failed: While executing"
reportExceptionAndFail("Test Failed: While executing"
+ " mergeTree on metadata.");
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册