1 package com.android.systemui.util.drawable 2 3 import android.content.res.Resources 4 import android.graphics.Bitmap 5 import android.graphics.drawable.BitmapDrawable 6 import android.graphics.drawable.ShapeDrawable 7 import android.testing.AndroidTestingRunner 8 import androidx.test.filters.SmallTest 9 import com.android.systemui.SysuiTestCase 10 import com.google.common.truth.Truth.assertThat 11 import org.junit.Before 12 import org.junit.Test 13 import org.junit.runner.RunWith 14 15 @RunWith(AndroidTestingRunner::class) 16 @SmallTest 17 class DrawableSizeTest : SysuiTestCase() { 18 19 lateinit var resources: Resources 20 21 @Before 22 fun setUp() { 23 resources = context.resources 24 } 25 26 @Test 27 fun testDownscaleToSize_drawableZeroSize_unchanged() { 28 val drawable = ShapeDrawable() 29 val result = DrawableSize.downscaleToSize(resources, drawable, 100, 100) 30 assertThat(result).isSameInstanceAs(drawable) 31 } 32 33 @Test 34 fun testDownscaleToSize_drawableSmallerThanRequirement_unchanged() { 35 val drawable = BitmapDrawable(resources, 36 Bitmap.createBitmap( 37 resources.displayMetrics, 38 150, 39 150, 40 Bitmap.Config.ARGB_8888 41 ) 42 ) 43 val result = DrawableSize.downscaleToSize(resources, drawable, 300, 300) 44 assertThat(result).isSameInstanceAs(drawable) 45 } 46 47 @Test 48 fun testDownscaleToSize_drawableLargerThanRequirementWithDensity_resized() { 49 // This bitmap would actually fail to resize if the method doesn't check for 50 // bitmap dimensions inside drawable. 51 val drawable = BitmapDrawable(resources, 52 Bitmap.createBitmap( 53 resources.displayMetrics, 54 150, 55 75, 56 Bitmap.Config.ARGB_8888 57 ) 58 ) 59 60 val result = DrawableSize.downscaleToSize(resources, drawable, 75, 75) 61 assertThat(result).isNotSameInstanceAs(drawable) 62 assertThat(result.intrinsicWidth).isEqualTo(75) 63 assertThat(result.intrinsicHeight).isEqualTo(37) 64 } 65 66 @Test 67 fun testDownscaleToSize_drawableAnimated_unchanged() { 68 val drawable = resources.getDrawable(android.R.drawable.stat_sys_download, 69 resources.newTheme()) 70 val result = DrawableSize.downscaleToSize(resources, drawable, 1, 1) 71 assertThat(result).isSameInstanceAs(drawable) 72 } 73 }