summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/shared/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/CursorResolverKosmos.kt4
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/CursorReadSizeTest.kt71
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/PayloadToggleCursorResolverTest.kt106
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractorTest.kt6
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractorTest.kt7
5 files changed, 187 insertions, 7 deletions
diff --git a/tests/shared/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/CursorResolverKosmos.kt b/tests/shared/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/CursorResolverKosmos.kt
index 10b89c71..d53210bd 100644
--- a/tests/shared/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/CursorResolverKosmos.kt
+++ b/tests/shared/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/CursorResolverKosmos.kt
@@ -16,13 +16,13 @@
package com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor
-import android.net.Uri
import com.android.intentresolver.contentResolver
+import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.CursorRow
import com.android.intentresolver.inject.additionalContentUri
import com.android.intentresolver.inject.chooserIntent
import com.android.systemui.kosmos.Kosmos
-var Kosmos.payloadToggleCursorResolver: CursorResolver<Uri?> by
+var Kosmos.payloadToggleCursorResolver: CursorResolver<CursorRow?> by
Kosmos.Fixture { payloadToggleCursorResolverImpl }
val Kosmos.payloadToggleCursorResolverImpl
get() =
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/CursorReadSizeTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/CursorReadSizeTest.kt
new file mode 100644
index 00000000..0c346095
--- /dev/null
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/CursorReadSizeTest.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver.contentpreview
+
+import android.database.MatrixCursor
+import android.provider.MediaStore.MediaColumns.HEIGHT
+import android.provider.MediaStore.MediaColumns.WIDTH
+import android.util.Size
+import com.google.common.truth.Truth.assertThat
+import com.google.common.truth.Truth.assertWithMessage
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+
+class CursorReadSizeTest {
+ @Test
+ fun missingSizeColumns() {
+ val cursor = MatrixCursor(arrayOf("column")).apply { addRow(arrayOf("abc")) }
+ cursor.moveToFirst()
+
+ assertThat(cursor.readSize()).isNull()
+ }
+
+ @Test
+ fun testIncorrectSizeValues() = runTest {
+ val cursor =
+ MatrixCursor(arrayOf(WIDTH, HEIGHT)).apply {
+ addRow(arrayOf(null, null))
+ addRow(arrayOf("100", null))
+ addRow(arrayOf(null, "100"))
+ addRow(arrayOf("-100", "100"))
+ addRow(arrayOf("100", "-100"))
+ addRow(arrayOf("100", "abc"))
+ addRow(arrayOf("abc", "100"))
+ }
+
+ var i = 0
+ while (cursor.moveToNext()) {
+ i++
+ assertWithMessage("Row $i").that(cursor.readSize()).isNull()
+ }
+ }
+
+ @Test
+ fun testCorrectSizeValues() = runTest {
+ val cursor =
+ MatrixCursor(arrayOf(HEIGHT, WIDTH)).apply {
+ addRow(arrayOf("100", 0))
+ addRow(arrayOf("100", "50"))
+ }
+
+ cursor.moveToNext()
+ assertThat(cursor.readSize()).isEqualTo(Size(0, 100))
+
+ cursor.moveToNext()
+ assertThat(cursor.readSize()).isEqualTo(Size(50, 100))
+ }
+}
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/PayloadToggleCursorResolverTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/PayloadToggleCursorResolverTest.kt
new file mode 100644
index 00000000..9eaee233
--- /dev/null
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/cursor/PayloadToggleCursorResolverTest.kt
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor
+
+import android.content.ContentInterface
+import android.content.Intent
+import android.database.MatrixCursor
+import android.net.Uri
+import android.provider.MediaStore.MediaColumns.HEIGHT
+import android.provider.MediaStore.MediaColumns.WIDTH
+import android.service.chooser.AdditionalContentContract.Columns.URI
+import android.util.Size
+import com.android.intentresolver.util.cursor.get
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.mockito.kotlin.any
+import org.mockito.kotlin.doReturn
+import org.mockito.kotlin.eq
+import org.mockito.kotlin.mock
+
+class PayloadToggleCursorResolverTest {
+ private val cursorUri = Uri.parse("content://org.pkg.app.extra")
+ private val chooserIntent = Intent()
+
+ @Test
+ fun missingSizeColumns() = runTest {
+ val uri = createUri(1)
+ val sourceCursor =
+ MatrixCursor(arrayOf(URI)).apply {
+ addRow(arrayOf(uri.toString()))
+ addRow(
+ arrayOf(
+ cursorUri.buildUpon().appendPath("should-be-ignored.png").build().toString()
+ )
+ )
+ addRow(arrayOf(null))
+ }
+ val fakeContentProvider =
+ mock<ContentInterface> {
+ on { query(eq(cursorUri), any(), any(), any()) } doReturn sourceCursor
+ }
+ val testSubject =
+ PayloadToggleCursorResolver(
+ fakeContentProvider,
+ cursorUri,
+ chooserIntent,
+ )
+
+ val cursor = testSubject.getCursor()
+ assertThat(cursor).isNotNull()
+ assertThat(cursor!!.count).isEqualTo(3)
+ cursor[0].let { row ->
+ assertThat(row).isNotNull()
+ assertThat(row!!.uri).isEqualTo(uri)
+ assertThat(row.previewSize).isNull()
+ }
+ assertThat(cursor[1]).isNull()
+ assertThat(cursor[2]).isNull()
+ }
+
+ @Test
+ fun testCorrectSizeValues() = runTest {
+ val uri = createUri(1)
+ val sourceCursor =
+ MatrixCursor(arrayOf(URI, WIDTH, HEIGHT)).apply {
+ addRow(arrayOf(uri.toString(), "100", "50"))
+ }
+ val fakeContentProvider =
+ mock<ContentInterface> {
+ on { query(eq(cursorUri), any(), any(), any()) } doReturn sourceCursor
+ }
+ val testSubject =
+ PayloadToggleCursorResolver(
+ fakeContentProvider,
+ cursorUri,
+ chooserIntent,
+ )
+
+ val cursor = testSubject.getCursor()
+ assertThat(cursor).isNotNull()
+ assertThat(cursor!!.count).isEqualTo(1)
+
+ cursor[0].let { row ->
+ assertThat(row).isNotNull()
+ assertThat(row!!.uri).isEqualTo(uri)
+ assertThat(row.previewSize).isEqualTo(Size(100, 50))
+ }
+ }
+}
+
+private fun createUri(id: Int) = Uri.parse("content://org.pkg/app/img-$id.png")
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractorTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractorTest.kt
index af6de833..81e6b77d 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractorTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/CursorPreviewsInteractorTest.kt
@@ -24,9 +24,11 @@ import androidx.core.os.bundleOf
import com.android.intentresolver.contentpreview.FileInfo
import com.android.intentresolver.contentpreview.UriMetadataReader
import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.cursorPreviewsRepository
+import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.CursorRow
import com.android.intentresolver.contentpreview.payloadtoggle.shared.model.PreviewModel
import com.android.intentresolver.contentpreview.uriMetadataReader
import com.android.intentresolver.util.KosmosTestScope
+import com.android.intentresolver.util.cursor.CursorView
import com.android.intentresolver.util.cursor.viewBy
import com.android.intentresolver.util.runTest
import com.android.systemui.kosmos.Kosmos
@@ -70,7 +72,7 @@ class CursorPreviewsInteractorTest {
private val cursorRange: Iterable<Int>,
private val cursorStartPosition: Int,
) {
- val cursor =
+ val cursor: CursorView<CursorRow?> =
MatrixCursor(arrayOf("uri"))
.apply {
extras = bundleOf("position" to cursorStartPosition)
@@ -78,7 +80,7 @@ class CursorPreviewsInteractorTest {
newRow().add("uri", uri(i).toString())
}
}
- .viewBy { getString(0)?.let(Uri::parse) }
+ .viewBy { getString(0)?.let { uriStr -> CursorRow(Uri.parse(uriStr), null) } }
val initialPreviews: List<PreviewModel> =
initialSelectionRange.map { i -> PreviewModel(uri = uri(i), mimeType = "image/bitmap") }
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractorTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractorTest.kt
index f012fcc6..da73f4cf 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractorTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/payloadtoggle/domain/interactor/FetchPreviewsInteractorTest.kt
@@ -26,6 +26,7 @@ import com.android.intentresolver.contentpreview.UriMetadataReader
import com.android.intentresolver.contentpreview.payloadtoggle.data.repository.cursorPreviewsRepository
import com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor.CursorResolver
import com.android.intentresolver.contentpreview.payloadtoggle.domain.cursor.payloadToggleCursorResolver
+import com.android.intentresolver.contentpreview.payloadtoggle.domain.model.CursorRow
import com.android.intentresolver.contentpreview.payloadtoggle.shared.model.PreviewModel
import com.android.intentresolver.contentpreview.payloadtoggle.shared.model.PreviewsModel
import com.android.intentresolver.contentpreview.uriMetadataReader
@@ -74,12 +75,12 @@ class FetchPreviewsInteractorTest {
private class FakeCursorResolver(
private val cursorRange: Iterable<Int>,
private val cursorStartPosition: Int,
- ) : CursorResolver<Uri?> {
+ ) : CursorResolver<CursorRow?> {
private val mutex = Mutex(locked = true)
fun complete() = mutex.unlock()
- override suspend fun getCursor(): CursorView<Uri?> =
+ override suspend fun getCursor(): CursorView<CursorRow?> =
mutex.withLock {
MatrixCursor(arrayOf("uri"))
.apply {
@@ -88,7 +89,7 @@ class FetchPreviewsInteractorTest {
newRow().add("uri", uri(i).toString())
}
}
- .viewBy { getString(0)?.let(Uri::parse) }
+ .viewBy { getString(0)?.let(Uri::parse)?.let { CursorRow(it, null) } }
}
}