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 }