decode covers at their display size and bucket the memory cache by size

This commit is contained in:
austinried
2026-10-04 00:29:58 +00:00
parent 11c0276929
commit 43f39300ce
4 changed files with 80 additions and 18 deletions
@@ -0,0 +1,35 @@
package com.subtracks.ui.components
import android.content.Context
import androidx.compose.ui.unit.IntSize
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.subtracks.data.model.CoverArtRef
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class CoverArtRequestTest {
@Test
fun sizedRequestBucketsTheMemoryKeyBySizeAndKeepsTheDiskKey() {
val context = ApplicationProvider.getApplicationContext<Context>()
val ref = CoverArtRef(url = "http://example.test/art", cacheKey = "1:art:false")
val request = imageRequest(context, ref, crossfade = false, size = IntSize(600, 800))
assertEquals("1:art:false:600x800", request.memoryCacheKey)
assertEquals(ref.cacheKey, request.diskCacheKey)
}
@Test
fun unsizedRequestKeepsTheIdentityMemoryKey() {
val context = ApplicationProvider.getApplicationContext<Context>()
val ref = CoverArtRef(url = "http://example.test/art", cacheKey = "1:art:true")
val request = imageRequest(context, ref, crossfade = false)
assertEquals(ref.cacheKey, request.memoryCacheKey)
assertEquals(ref.cacheKey, request.diskCacheKey)
}
}
@@ -5,6 +5,7 @@ import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import coil3.SingletonImageLoader
import coil3.annotation.DelicateCoilApi
import coil3.request.CachePolicy
import coil3.size.Dimension
import com.subtracks.data.model.CoverArtRef
import kotlinx.coroutines.runBlocking
@@ -33,7 +34,7 @@ class NowPlayingArtworkTest {
val metrics = context.resources.displayMetrics
assertEquals(maxOf(metrics.widthPixels, metrics.heightPixels), width)
assertEquals(ref.cacheKey, request.memoryCacheKey)
assertEquals(ref.cacheKey, request.diskCacheKey)
assertEquals(CachePolicy.DISABLED, request.memoryCachePolicy)
}
}