package it.sephiroth.android.library.exif2 import android.util.Log import android.util.SparseIntArray import org.junit.Assert.* import org.junit.Test import java.io.File import java.io.FileInputStream class Test1 { @Test fun testLog() { Log.v("TEST", "test") assertTrue("using android.util.Log", true) } @Test fun testSparseIntArray() { val a = SparseIntArray() a.put(1, 2) assertTrue("get existing value", a[1] == 2) assertTrue("fallback to default value ", a.get(0, - 1) == - 1) } // get File object from files in src/test/resources/ private fun getFile(fileName : String) : File { return when(val resource = this.javaClass.classLoader !!.getResource(fileName)) { null -> error("missing file $fileName") else -> File(resource.path) } } private fun getOrientation(fileName : String) : Pair = try { val o = FileInputStream(getFile(fileName)).use { inStream -> ExifInterface() .readExif( inStream, ExifInterface.Options.OPTION_IFD_0 or ExifInterface.Options.OPTION_IFD_1 or ExifInterface.Options.OPTION_IFD_EXIF ) .getTagIntValue(ExifInterface.TAG_ORIENTATION) } Pair(o, null) } catch(ex : Throwable) { Pair(null, ex) } private fun getThumbnailBytes(fileName : String) : Pair = try { val o = FileInputStream(getFile(fileName)).use { inStream -> ExifInterface() .readExif( inStream, ExifInterface.Options.OPTION_IFD_0 or ExifInterface.Options.OPTION_IFD_1 or ExifInterface.Options.OPTION_IFD_EXIF ) .thumbnailBytes } Pair(o, null) } catch(ex : Throwable) { Pair(null, ex) } @Test fun testNotJpeg() { fun testNotJpegSub(fileName : String) { val (o, ex) = getOrientation(fileName) assertTrue("testNotJpegSub", o == null && ex != null) } testNotJpegSub("test.gif") testNotJpegSub("test.png") testNotJpegSub("test.webp") } @Test fun testJpeg() { var fileName : String var rvO : Pair var rvT : Pair // this file has orientation 6. fileName = "test3.jpg" rvO = getOrientation(fileName) assertEquals(fileName, 6, rvO.first) rvT = getThumbnailBytes(fileName) assertNull(fileName, rvT.first) // this file has orientation 1 fileName = "test1.jpg" rvO = getOrientation(fileName) assertEquals(fileName, 1, rvO.first) rvT = getThumbnailBytes(fileName) assertNull(fileName, rvT.first) // this file has no orientation, it raises exception. fileName = "test2.jpg" rvO = getOrientation(fileName) assertNotNull( fileName, rvO.second ) // rvT = getThumbnailBytes(fileName) assertNotNull( fileName, rvT.second ) // } }