Mercurial > cgi-bin > hgweb.cgi > SimpleResizer
view app/src/androidTest/java/com/bartsent/simpleresizer/ResizerTest.kt @ 38:444fe4416c9b
Add unit tests of my resizing code.
author | David Barts <n5jrn@me.com> |
---|---|
date | Thu, 25 Mar 2021 19:11:43 -0700 |
parents | |
children |
line wrap: on
line source
package com.bartsent.simpleresizer import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Color import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import com.bartsent.simpleresizer.lib.getScaledInstance import org.junit.Assert import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class ResizerTest { val ORIG_TILE_SIZE = 576 val WIDTH_IN_TILES = 8 val HEIGHT_IN_TILES = 6 val CSTEP = 0x55 var count = 0 @Test fun canLoadImage() { val image = getBitmap() Assert.assertNotNull(image) checkBitmap(image, WIDTH_IN_TILES * ORIG_TILE_SIZE, HEIGHT_IN_TILES * ORIG_TILE_SIZE) } @Test fun resizeVertical() { val image = getBitmap() val newWidth = image.width val newHeight = image.height / 2 checkBitmap(image.getScaledInstance(newWidth, newHeight), newWidth, newHeight) } @Test fun resizeHorizontal() { val image = getBitmap() val newWidth = image.width / 2 val newHeight = image.height checkBitmap(image.getScaledInstance(newWidth, newHeight), newWidth, newHeight) } @Test fun resizeBoth() { val image = getBitmap() val newWidth = image.width / 2 val newHeight = image.height / 2 checkBitmap(image.getScaledInstance(newWidth, newHeight), newWidth, newHeight) } fun getBitmap(): Bitmap = InstrumentationRegistry.getInstrumentation().context.assets.open("testimage.png").use { BitmapFactory.decodeStream(it) } fun getColor(): Int { count += 1 val b = (count and 0x3)*CSTEP val temp = count shr 2 val g = (temp and 0x3)*CSTEP val r = ((temp shr 2) and 0x3)*CSTEP return Color.rgb(r, g, b) } fun resetColor() { count = 0 } fun checkBitmap(image: Bitmap, width: Int, height: Int) { Assert.assertEquals("width", width, image.width) Assert.assertEquals("height", height, image.height) val tileWidth = image.width / WIDTH_IN_TILES val tileHeight = image.height / HEIGHT_IN_TILES val tw2 = tileWidth / 2 val th2 = tileHeight / 2 resetColor() for (x in 0 until WIDTH_IN_TILES) { val xoff = tw2 + x * tileWidth for (y in 0 until HEIGHT_IN_TILES) { val yoff = th2 + y * tileHeight Assert.assertEquals("color @ tile $x, $y", getColor(), image.getPixel(xoff, yoff)) } } } }