From 4729f2992f820d5c03011253cd5f528bf0b40129 Mon Sep 17 00:00:00 2001 From: Earl Ou Date: Tue, 28 Aug 2012 18:39:49 +0800 Subject: ExifOutputStream Change-Id: I9f2de77e87a502ccdadba0b18658621028c538c9 --- .../gallery3d/exif/ExifOutputStreamTest.java | 77 ++++++++++++++++++++++ .../com/android/gallery3d/exif/ExifTestRunner.java | 1 + 2 files changed, 78 insertions(+) create mode 100644 tests/src/com/android/gallery3d/exif/ExifOutputStreamTest.java (limited to 'tests') diff --git a/tests/src/com/android/gallery3d/exif/ExifOutputStreamTest.java b/tests/src/com/android/gallery3d/exif/ExifOutputStreamTest.java new file mode 100644 index 000000000..fb85b2c91 --- /dev/null +++ b/tests/src/com/android/gallery3d/exif/ExifOutputStreamTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.gallery3d.exif; + +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.test.InstrumentationTestCase; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class ExifOutputStreamTest extends InstrumentationTestCase { + + private final int mImageResourceId; + + public ExifOutputStreamTest(int imageResourceId, int xmlReourceId) { + mImageResourceId = imageResourceId; + } + + public void testExifOutputStream() throws IOException, ExifInvalidFormatException { + File file = File.createTempFile("exif_test", ".jpg"); + InputStream imageInputStream = null; + InputStream exifInputStream = null; + FileInputStream reDecodeInputStream = null; + FileInputStream reParseInputStream = null; + try { + // Read the image + imageInputStream = getInstrumentation() + .getContext().getResources().openRawResource(mImageResourceId); + Bitmap bmp = BitmapFactory.decodeStream(imageInputStream); + + // Read exif data + exifInputStream = getInstrumentation() + .getContext().getResources().openRawResource(mImageResourceId); + ExifData exifData = new ExifReader().read(exifInputStream); + + // Encode the image with the exif data + FileOutputStream outputStream = new FileOutputStream(file); + ExifOutputStream exifOutputStream = new ExifOutputStream(outputStream); + exifOutputStream.setExifData(exifData); + bmp.compress(Bitmap.CompressFormat.JPEG, 100, exifOutputStream); + exifOutputStream.close(); + + // Re-decode the temp file and check the data. + reDecodeInputStream = new FileInputStream(file); + Bitmap decodedBmp = BitmapFactory.decodeStream(reDecodeInputStream); + assertNotNull(decodedBmp); + + // Re-parse the temp file the check EXIF tag + reParseInputStream = new FileInputStream(file); + ExifData reExifData = new ExifReader().read(reParseInputStream); + assertEquals(exifData, reExifData); + } finally { + Util.closeSilently(imageInputStream); + Util.closeSilently(exifInputStream); + Util.closeSilently(reDecodeInputStream); + Util.closeSilently(reParseInputStream); + } + } +} \ No newline at end of file diff --git a/tests/src/com/android/gallery3d/exif/ExifTestRunner.java b/tests/src/com/android/gallery3d/exif/ExifTestRunner.java index 022597d73..bcbc9f57b 100644 --- a/tests/src/com/android/gallery3d/exif/ExifTestRunner.java +++ b/tests/src/com/android/gallery3d/exif/ExifTestRunner.java @@ -44,6 +44,7 @@ public class ExifTestRunner extends InstrumentationTestRunner { TestSuite suite = new InstrumentationTestSuite(this); getAllTestFromTestCase(ExifParserTest.class, suite); getAllTestFromTestCase(ExifReaderTest.class, suite); + getAllTestFromTestCase(ExifOutputStreamTest.class, suite); return suite; } -- cgit v1.2.3