diff options
Diffstat (limited to 'tests/src/com/android/gallery3d/exif/ExifTagTest.java')
-rw-r--r-- | tests/src/com/android/gallery3d/exif/ExifTagTest.java | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/tests/src/com/android/gallery3d/exif/ExifTagTest.java b/tests/src/com/android/gallery3d/exif/ExifTagTest.java deleted file mode 100644 index e6a41ecfa..000000000 --- a/tests/src/com/android/gallery3d/exif/ExifTagTest.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * 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.test.suitebuilder.annotation.SmallTest; - -import junit.framework.TestCase; - -import java.util.HashMap; -import java.util.Map; - -public class ExifTagTest extends TestCase { - - private static long MAX_UNSIGNED_LONG = (1L << 32) - 1; - private static int MAX_LONG = Integer.MAX_VALUE; - private static int MIN_LONG = Integer.MIN_VALUE; - - Map<Integer, ExifTag> mTestTags; - ExifInterface mInterface; - private ExifTag mVersionTag; - private ExifTag mGpsVersionTag; - private ExifTag mModelTag; - private ExifTag mDateTimeTag; - private ExifTag mCompressionTag; - private ExifTag mThumbnailFormatTag; - private ExifTag mLongitudeTag; - private ExifTag mShutterTag; - private ExifTag mInteropIndex; - - @Override - public void setUp() throws Exception { - super.setUp(); - mInterface = new ExifInterface(); - - // TYPE_UNDEFINED with 4 components - mVersionTag = mInterface.buildTag(ExifInterface.TAG_EXIF_VERSION, new byte[] { - 5, 4, 3, 2 - }); - // TYPE_UNSIGNED_BYTE with 4 components - mGpsVersionTag = mInterface.buildTag(ExifInterface.TAG_GPS_VERSION_ID, new byte[] { - 6, 7, 8, 9 - }); - // TYPE ASCII with arbitrary length - mModelTag = mInterface.buildTag(ExifInterface.TAG_MODEL, "helloworld"); - // TYPE_ASCII with 20 components - mDateTimeTag = mInterface.buildTag(ExifInterface.TAG_DATE_TIME, "2013:02:11 20:20:20"); - // TYPE_UNSIGNED_SHORT with 1 components - mCompressionTag = mInterface.buildTag(ExifInterface.TAG_COMPRESSION, 100); - // TYPE_UNSIGNED_LONG with 1 components - mThumbnailFormatTag = - mInterface.buildTag(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT, 100); - // TYPE_UNSIGNED_RATIONAL with 3 components - mLongitudeTag = mInterface.buildTag(ExifInterface.TAG_GPS_LONGITUDE, new Rational[] { - new Rational(2, 2), new Rational(11, 11), - new Rational(102, 102) - }); - // TYPE_RATIONAL with 1 components - mShutterTag = mInterface - .buildTag(ExifInterface.TAG_SHUTTER_SPEED_VALUE, new Rational(4, 6)); - // TYPE_ASCII with arbitrary length - mInteropIndex = mInterface.buildTag(ExifInterface.TAG_INTEROPERABILITY_INDEX, "foo"); - - mTestTags = new HashMap<Integer, ExifTag>(); - - mTestTags.put(ExifInterface.TAG_EXIF_VERSION, mVersionTag); - mTestTags.put(ExifInterface.TAG_GPS_VERSION_ID, mGpsVersionTag); - mTestTags.put(ExifInterface.TAG_MODEL, mModelTag); - mTestTags.put(ExifInterface.TAG_DATE_TIME, mDateTimeTag); - mTestTags.put(ExifInterface.TAG_COMPRESSION, mCompressionTag); - mTestTags.put(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT, mThumbnailFormatTag); - mTestTags.put(ExifInterface.TAG_GPS_LONGITUDE, mLongitudeTag); - mTestTags.put(ExifInterface.TAG_SHUTTER_SPEED_VALUE, mShutterTag); - mTestTags.put(ExifInterface.TAG_INTEROPERABILITY_INDEX, mInteropIndex); - } - - @Override - public void tearDown() throws Exception { - super.tearDown(); - mInterface = null; - mTestTags = null; - } - - @SmallTest - public void testValueType() { - for (ExifTag tag : mTestTags.values()) { - assertTrue(tag != null); - int count = tag.getComponentCount(); - int intBuf[] = new int[count]; - long longBuf[] = new long[count]; - byte byteBuf[] = new byte[count]; - Rational rationalBuf[] = new Rational[count]; - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < count; i++) { - intBuf[i] = 0; - longBuf[i] = 0; - byteBuf[i] = 0; - rationalBuf[i] = new Rational(0, 0); - // The string size should equal to component count - 1 - if (i != count - 1) { - sb.append("*"); - } else { - sb.append("\0"); - } - } - String strBuf = sb.toString(); - - checkTypeByte(tag, byteBuf); - checkTypeAscii(tag, strBuf); - checkTypeUnsignedShort(tag, intBuf); - checkTypeUnsignedLong(tag, intBuf, longBuf); - checkTypeLong(tag, intBuf); - checkTypeRational(tag, rationalBuf); - checkTypeUnsignedRational(tag, rationalBuf); - } - } - - private void checkTypeByte(ExifTag tag, byte[] buf) { - short type = tag.getDataType(); - assertFalse("\nTag: " + tag.toString(), tag.setValue(buf) - ^ (type == ExifTag.TYPE_UNDEFINED || type == ExifTag.TYPE_UNSIGNED_BYTE)); - } - - private void checkTypeAscii(ExifTag tag, String str) { - short type = tag.getDataType(); - assertFalse("\nTag: " + tag.toString(), tag.setValue(str) - ^ (type == ExifTag.TYPE_ASCII || type == ExifTag.TYPE_UNDEFINED)); - } - - private void checkTypeUnsignedShort(ExifTag tag, int[] intBuf) { - short type = tag.getDataType(); - assertFalse("\nTag: " + tag.toString(), - tag.setValue(intBuf) - ^ (type == ExifTag.TYPE_UNSIGNED_SHORT - || type == ExifTag.TYPE_UNSIGNED_LONG - || type == ExifTag.TYPE_LONG)); - } - - private void checkTypeUnsignedLong(ExifTag tag, int[] intBuf, long[] longBuf) { - - // Test value only for unsigned long. - int count = intBuf.length; - intBuf[count - 1] = MAX_LONG; - tag.setValue(intBuf); - longBuf[count - 1] = MAX_UNSIGNED_LONG; - - assertFalse("\nTag: " + tag.toString(), tag.setValue(longBuf) - ^ (tag.getDataType() == ExifTag.TYPE_UNSIGNED_LONG)); - - intBuf[count - 1] = 0; - // Test invalid value for all type. - longBuf[count - 1] = MAX_UNSIGNED_LONG + 1; - assertFalse(tag.setValue(longBuf)); - longBuf[count - 1] = 0; - } - - private void checkTypeLong(ExifTag tag, int[] intBuf) { - int count = intBuf.length; - intBuf[count - 1] = MAX_LONG; - tag.setValue(intBuf); - intBuf[count - 1] = MIN_LONG; - - assertFalse("\nTag: " + tag.toString(), tag.setValue(intBuf) - ^ (tag.getDataType() == ExifTag.TYPE_LONG)); - intBuf[count - 1] = 0; - } - - private void checkTypeRational(ExifTag tag, Rational rationalBuf[]) { - int count = rationalBuf.length; - Rational r = rationalBuf[count - 1]; - rationalBuf[count - 1] = new Rational(MAX_LONG, MIN_LONG); - - assertFalse("\nTag: " + tag.toString(), tag.setValue(rationalBuf) - ^ (tag.getDataType() == ExifTag.TYPE_RATIONAL)); - - if (tag.getDataType() == ExifTag.TYPE_RATIONAL) { - // check overflow - - rationalBuf[count - 1] = new Rational(MAX_LONG + 1L, MIN_LONG); - assertFalse(tag.setValue(rationalBuf)); - - rationalBuf[count - 1] = new Rational(MAX_LONG, MIN_LONG - 1L); - assertFalse(tag.setValue(rationalBuf)); - } - rationalBuf[count - 1] = r; - } - - private void checkTypeUnsignedRational(ExifTag tag, Rational rationalBuf[]) { - int count = rationalBuf.length; - Rational r = rationalBuf[count - 1]; - rationalBuf[count - 1] = new Rational(MAX_UNSIGNED_LONG, MAX_UNSIGNED_LONG); - - assertFalse("\nTag: " + tag.toString(), tag.setValue(rationalBuf) - ^ (tag.getDataType() == ExifTag.TYPE_UNSIGNED_RATIONAL)); - - if (tag.getDataType() == ExifTag.TYPE_UNSIGNED_RATIONAL) { - // check overflow - rationalBuf[count - 1] = new Rational(MAX_UNSIGNED_LONG + 1, 0); - assertFalse(tag.setValue(rationalBuf)); - - rationalBuf[count - 1] = new Rational(MAX_UNSIGNED_LONG, -1); - assertFalse(tag.setValue(rationalBuf)); - } - rationalBuf[count - 1] = r; - } -} |