Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt +78 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.settings.userFileManager import com.android.systemui.settings.userFileManager import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.user.data.repository.fakeUserRepository Loading @@ -39,6 +40,70 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos() private val kosmos = testKosmos() private val underTest = with(kosmos) { qsPreferencesRepository } private val underTest = with(kosmos) { qsPreferencesRepository } @Test fun largeTilesSpecs_updatesFromSharedPreferences() = with(kosmos) { testScope.runTest { val latest by collectLastValue(underTest.largeTilesSpecs) assertThat(latest).isEqualTo(defaultLargeTilesRepository.defaultLargeTiles) val newSet = setOf("tileA", "tileB") setLargeTilesSpecsInSharedPreferences(newSet) assertThat(latest).isEqualTo(newSet.toTileSpecs()) } } @Test fun largeTilesSpecs_updatesFromUserChange() = with(kosmos) { testScope.runTest { fakeUserRepository.setUserInfos(USERS) val latest by collectLastValue(underTest.largeTilesSpecs) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) val newSet = setOf("tileA", "tileB") setLargeTilesSpecsInSharedPreferences(newSet) fakeUserRepository.setSelectedUserInfo(ANOTHER_USER) setLargeTilesSpecsInSharedPreferences(emptySet()) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) assertThat(latest).isEqualTo(newSet.toTileSpecs()) } } @Test fun setLargeTilesSpecs_inSharedPreferences() { val setA = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setA.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) val setB = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setB.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setB) } @Test fun setLargeTilesSpecs_forDifferentUser() = with(kosmos) { testScope.runTest { fakeUserRepository.setUserInfos(USERS) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) val setA = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setA.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) fakeUserRepository.setSelectedUserInfo(ANOTHER_USER) val setB = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setB.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setB) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) } } @Test @Test fun showLabels_updatesFromSharedPreferences() = fun showLabels_updatesFromSharedPreferences() = with(kosmos) { with(kosmos) { Loading Loading @@ -109,6 +174,14 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { ) ) } } private fun setLargeTilesSpecsInSharedPreferences(specs: Set<String>) { getSharedPreferences().edit().putStringSet(LARGE_TILES_SPECS_KEY, specs).apply() } private fun getLargeTilesSpecsFromSharedPreferences(): Set<String> { return getSharedPreferences().getStringSet(LARGE_TILES_SPECS_KEY, emptySet())!! } private fun setShowLabelsInSharedPreferences(value: Boolean) { private fun setShowLabelsInSharedPreferences(value: Boolean) { getSharedPreferences().edit().putBoolean(ICON_LABELS_KEY, value).apply() getSharedPreferences().edit().putBoolean(ICON_LABELS_KEY, value).apply() } } Loading @@ -117,8 +190,13 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { return getSharedPreferences().getBoolean(ICON_LABELS_KEY, defaultValue) return getSharedPreferences().getBoolean(ICON_LABELS_KEY, defaultValue) } } private fun Set<String>.toTileSpecs(): Set<TileSpec> { return map { TileSpec.create(it) }.toSet() } companion object { companion object { private const val ICON_LABELS_KEY = "show_icon_labels" private const val ICON_LABELS_KEY = "show_icon_labels" private const val LARGE_TILES_SPECS_KEY = "large_tiles_specs" private const val PRIMARY_USER_ID = 0 private const val PRIMARY_USER_ID = 0 private val PRIMARY_USER = UserInfo(PRIMARY_USER_ID, "user 0", UserInfo.FLAG_MAIN) private val PRIMARY_USER = UserInfo(PRIMARY_USER_ID, "user 0", UserInfo.FLAG_MAIN) private const val ANOTHER_USER_ID = 1 private const val ANOTHER_USER_ID = 1 Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt +11 −16 Original line number Original line Diff line number Diff line Loading @@ -20,9 +20,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.gridLayoutTypeRepository import com.android.systemui.qs.panels.data.repository.gridLayoutTypeRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.shared.model.InfiniteGridLayoutType import com.android.systemui.qs.panels.shared.model.InfiniteGridLayoutType import com.android.systemui.qs.panels.shared.model.PartitionedGridLayoutType import com.android.systemui.qs.panels.shared.model.PartitionedGridLayoutType import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository Loading @@ -42,22 +42,17 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class GridConsistencyInteractorTest : SysuiTestCase() { class GridConsistencyInteractorTest : SysuiTestCase() { private val iconOnlyTiles = setOf( TileSpec.create("smallA"), TileSpec.create("smallB"), TileSpec.create("smallC"), TileSpec.create("smallD"), TileSpec.create("smallE"), ) private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles = return iconOnlyTiles.contains(spec) setOf( } TileSpec.create("largeA"), TileSpec.create("largeB"), TileSpec.create("largeC"), TileSpec.create("largeD"), ) } } } } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt 0 → 100644 +86 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 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.systemui.qs.panels.domain.interactor import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.qsPreferencesRepository import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class IconTilesInteractorTest : SysuiTestCase() { private val kosmos = testKosmos().apply { defaultLargeTilesRepository = object : DefaultLargeTilesRepository { override val defaultLargeTiles: Set<TileSpec> = setOf(TileSpec.create("large")) } } private val underTest = with(kosmos) { iconTilesInteractor } @Test fun isIconTile_returnsCorrectValue() { assertThat(underTest.isIconTile(TileSpec.create("large"))).isFalse() assertThat(underTest.isIconTile(TileSpec.create("small"))).isTrue() } @OptIn(ExperimentalCoroutinesApi::class) @Test fun isIconTile_updatesFromSharedPreferences() = with(kosmos) { testScope.runTest { // Assert that new tile defaults to icon assertThat(underTest.isIconTile(TileSpec.create("newTile"))).isTrue() qsPreferencesRepository.setLargeTilesSpecs(setOf(TileSpec.create("newTile"))) runCurrent() // Assert that the new tile was added to the large tiles set assertThat(underTest.isIconTile(TileSpec.create("newTile"))).isFalse() } } @Test fun resize_updatesSharedPreferences() = with(kosmos) { testScope.runTest { val latest by collectLastValue(qsPreferencesRepository.largeTilesSpecs) val spec = TileSpec.create("large") // Assert that the tile is added to the large tiles after resizing underTest.resize(spec, toIcon = false) assertThat(latest).contains(spec) // Assert that the tile is removed from the large tiles after resizing underTest.resize(spec, toIcon = true) assertThat(latest).doesNotContain(spec) } } } packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt +11 −15 Original line number Original line Diff line number Diff line Loading @@ -20,8 +20,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat Loading @@ -33,21 +33,17 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class InfiniteGridConsistencyInteractorTest : SysuiTestCase() { class InfiniteGridConsistencyInteractorTest : SysuiTestCase() { private val iconOnlyTiles = setOf( TileSpec.create("smallA"), TileSpec.create("smallB"), TileSpec.create("smallC"), TileSpec.create("smallD"), TileSpec.create("smallE"), ) private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles: Set<TileSpec> = return iconOnlyTiles.contains(spec) setOf( } TileSpec.create("largeA"), TileSpec.create("largeB"), TileSpec.create("largeC"), TileSpec.create("largeD"), ) } } } } private val underTest = with(kosmos) { infiniteGridConsistencyInteractor } private val underTest = with(kosmos) { infiniteGridConsistencyInteractor } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/InfiniteGridLayoutTest.kt +5 −7 Original line number Original line Diff line number Diff line Loading @@ -20,8 +20,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.ui.viewmodel.MockTileViewModel import com.android.systemui.qs.panels.ui.viewmodel.MockTileViewModel import com.android.systemui.qs.panels.ui.viewmodel.fixedColumnsSizeViewModel import com.android.systemui.qs.panels.ui.viewmodel.fixedColumnsSizeViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel Loading @@ -37,11 +37,9 @@ import org.junit.runner.RunWith class InfiniteGridLayoutTest : SysuiTestCase() { class InfiniteGridLayoutTest : SysuiTestCase() { private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles: Set<TileSpec> = setOf(TileSpec.create("large")) return spec.spec.startsWith("small") } } } } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/data/repository/QSPreferencesRepositoryTest.kt +78 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.settings.userFileManager import com.android.systemui.settings.userFileManager import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.fakeUserRepository import com.android.systemui.user.data.repository.fakeUserRepository Loading @@ -39,6 +40,70 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos() private val kosmos = testKosmos() private val underTest = with(kosmos) { qsPreferencesRepository } private val underTest = with(kosmos) { qsPreferencesRepository } @Test fun largeTilesSpecs_updatesFromSharedPreferences() = with(kosmos) { testScope.runTest { val latest by collectLastValue(underTest.largeTilesSpecs) assertThat(latest).isEqualTo(defaultLargeTilesRepository.defaultLargeTiles) val newSet = setOf("tileA", "tileB") setLargeTilesSpecsInSharedPreferences(newSet) assertThat(latest).isEqualTo(newSet.toTileSpecs()) } } @Test fun largeTilesSpecs_updatesFromUserChange() = with(kosmos) { testScope.runTest { fakeUserRepository.setUserInfos(USERS) val latest by collectLastValue(underTest.largeTilesSpecs) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) val newSet = setOf("tileA", "tileB") setLargeTilesSpecsInSharedPreferences(newSet) fakeUserRepository.setSelectedUserInfo(ANOTHER_USER) setLargeTilesSpecsInSharedPreferences(emptySet()) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) assertThat(latest).isEqualTo(newSet.toTileSpecs()) } } @Test fun setLargeTilesSpecs_inSharedPreferences() { val setA = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setA.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) val setB = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setB.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setB) } @Test fun setLargeTilesSpecs_forDifferentUser() = with(kosmos) { testScope.runTest { fakeUserRepository.setUserInfos(USERS) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) val setA = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setA.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) fakeUserRepository.setSelectedUserInfo(ANOTHER_USER) val setB = setOf("tileA", "tileB") underTest.setLargeTilesSpecs(setB.toTileSpecs()) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setB) fakeUserRepository.setSelectedUserInfo(PRIMARY_USER) assertThat(getLargeTilesSpecsFromSharedPreferences()).isEqualTo(setA) } } @Test @Test fun showLabels_updatesFromSharedPreferences() = fun showLabels_updatesFromSharedPreferences() = with(kosmos) { with(kosmos) { Loading Loading @@ -109,6 +174,14 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { ) ) } } private fun setLargeTilesSpecsInSharedPreferences(specs: Set<String>) { getSharedPreferences().edit().putStringSet(LARGE_TILES_SPECS_KEY, specs).apply() } private fun getLargeTilesSpecsFromSharedPreferences(): Set<String> { return getSharedPreferences().getStringSet(LARGE_TILES_SPECS_KEY, emptySet())!! } private fun setShowLabelsInSharedPreferences(value: Boolean) { private fun setShowLabelsInSharedPreferences(value: Boolean) { getSharedPreferences().edit().putBoolean(ICON_LABELS_KEY, value).apply() getSharedPreferences().edit().putBoolean(ICON_LABELS_KEY, value).apply() } } Loading @@ -117,8 +190,13 @@ class QSPreferencesRepositoryTest : SysuiTestCase() { return getSharedPreferences().getBoolean(ICON_LABELS_KEY, defaultValue) return getSharedPreferences().getBoolean(ICON_LABELS_KEY, defaultValue) } } private fun Set<String>.toTileSpecs(): Set<TileSpec> { return map { TileSpec.create(it) }.toSet() } companion object { companion object { private const val ICON_LABELS_KEY = "show_icon_labels" private const val ICON_LABELS_KEY = "show_icon_labels" private const val LARGE_TILES_SPECS_KEY = "large_tiles_specs" private const val PRIMARY_USER_ID = 0 private const val PRIMARY_USER_ID = 0 private val PRIMARY_USER = UserInfo(PRIMARY_USER_ID, "user 0", UserInfo.FLAG_MAIN) private val PRIMARY_USER = UserInfo(PRIMARY_USER_ID, "user 0", UserInfo.FLAG_MAIN) private const val ANOTHER_USER_ID = 1 private const val ANOTHER_USER_ID = 1 Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/GridConsistencyInteractorTest.kt +11 −16 Original line number Original line Diff line number Diff line Loading @@ -20,9 +20,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.gridLayoutTypeRepository import com.android.systemui.qs.panels.data.repository.gridLayoutTypeRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.shared.model.InfiniteGridLayoutType import com.android.systemui.qs.panels.shared.model.InfiniteGridLayoutType import com.android.systemui.qs.panels.shared.model.PartitionedGridLayoutType import com.android.systemui.qs.panels.shared.model.PartitionedGridLayoutType import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository import com.android.systemui.qs.pipeline.data.repository.tileSpecRepository Loading @@ -42,22 +42,17 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class GridConsistencyInteractorTest : SysuiTestCase() { class GridConsistencyInteractorTest : SysuiTestCase() { private val iconOnlyTiles = setOf( TileSpec.create("smallA"), TileSpec.create("smallB"), TileSpec.create("smallC"), TileSpec.create("smallD"), TileSpec.create("smallE"), ) private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles = return iconOnlyTiles.contains(spec) setOf( } TileSpec.create("largeA"), TileSpec.create("largeB"), TileSpec.create("largeC"), TileSpec.create("largeD"), ) } } } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/IconTilesInteractorTest.kt 0 → 100644 +86 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 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.systemui.qs.panels.domain.interactor import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.qsPreferencesRepository import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class IconTilesInteractorTest : SysuiTestCase() { private val kosmos = testKosmos().apply { defaultLargeTilesRepository = object : DefaultLargeTilesRepository { override val defaultLargeTiles: Set<TileSpec> = setOf(TileSpec.create("large")) } } private val underTest = with(kosmos) { iconTilesInteractor } @Test fun isIconTile_returnsCorrectValue() { assertThat(underTest.isIconTile(TileSpec.create("large"))).isFalse() assertThat(underTest.isIconTile(TileSpec.create("small"))).isTrue() } @OptIn(ExperimentalCoroutinesApi::class) @Test fun isIconTile_updatesFromSharedPreferences() = with(kosmos) { testScope.runTest { // Assert that new tile defaults to icon assertThat(underTest.isIconTile(TileSpec.create("newTile"))).isTrue() qsPreferencesRepository.setLargeTilesSpecs(setOf(TileSpec.create("newTile"))) runCurrent() // Assert that the new tile was added to the large tiles set assertThat(underTest.isIconTile(TileSpec.create("newTile"))).isFalse() } } @Test fun resize_updatesSharedPreferences() = with(kosmos) { testScope.runTest { val latest by collectLastValue(qsPreferencesRepository.largeTilesSpecs) val spec = TileSpec.create("large") // Assert that the tile is added to the large tiles after resizing underTest.resize(spec, toIcon = false) assertThat(latest).contains(spec) // Assert that the tile is removed from the large tiles after resizing underTest.resize(spec, toIcon = true) assertThat(latest).doesNotContain(spec) } } }
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/domain/interactor/InfiniteGridConsistencyInteractorTest.kt +11 −15 Original line number Original line Diff line number Diff line Loading @@ -20,8 +20,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.qs.pipeline.shared.TileSpec import com.android.systemui.testKosmos import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat Loading @@ -33,21 +33,17 @@ import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class) class InfiniteGridConsistencyInteractorTest : SysuiTestCase() { class InfiniteGridConsistencyInteractorTest : SysuiTestCase() { private val iconOnlyTiles = setOf( TileSpec.create("smallA"), TileSpec.create("smallB"), TileSpec.create("smallC"), TileSpec.create("smallD"), TileSpec.create("smallE"), ) private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles: Set<TileSpec> = return iconOnlyTiles.contains(spec) setOf( } TileSpec.create("largeA"), TileSpec.create("largeB"), TileSpec.create("largeC"), TileSpec.create("largeD"), ) } } } } private val underTest = with(kosmos) { infiniteGridConsistencyInteractor } private val underTest = with(kosmos) { infiniteGridConsistencyInteractor } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/panels/ui/compose/InfiniteGridLayoutTest.kt +5 −7 Original line number Original line Diff line number Diff line Loading @@ -20,8 +20,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.testScope import com.android.systemui.qs.panels.data.repository.IconTilesRepository import com.android.systemui.qs.panels.data.repository.DefaultLargeTilesRepository import com.android.systemui.qs.panels.data.repository.iconTilesRepository import com.android.systemui.qs.panels.data.repository.defaultLargeTilesRepository import com.android.systemui.qs.panels.ui.viewmodel.MockTileViewModel import com.android.systemui.qs.panels.ui.viewmodel.MockTileViewModel import com.android.systemui.qs.panels.ui.viewmodel.fixedColumnsSizeViewModel import com.android.systemui.qs.panels.ui.viewmodel.fixedColumnsSizeViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel import com.android.systemui.qs.panels.ui.viewmodel.iconTilesViewModel Loading @@ -37,11 +37,9 @@ import org.junit.runner.RunWith class InfiniteGridLayoutTest : SysuiTestCase() { class InfiniteGridLayoutTest : SysuiTestCase() { private val kosmos = private val kosmos = testKosmos().apply { testKosmos().apply { iconTilesRepository = defaultLargeTilesRepository = object : IconTilesRepository { object : DefaultLargeTilesRepository { override fun isIconTile(spec: TileSpec): Boolean { override val defaultLargeTiles: Set<TileSpec> = setOf(TileSpec.create("large")) return spec.spec.startsWith("small") } } } } } Loading