Merge "Revert "Revert "Convert Keyguard tests to Robolectric tests""" into tm-qpr-dev

This commit is contained in:
Kevin Liu
2023-02-10 14:28:31 +00:00
committed by Android (Google) Code Review
32 changed files with 166 additions and 119 deletions

View File

@@ -204,6 +204,45 @@ filegroup {
path: "tests/utils/src", path: "tests/utils/src",
} }
filegroup {
name: "SystemUI-tests-robolectric-pilots",
srcs: [
// data
"tests/src/com/android/systemui/keyguard/data/quickaffordance/CameraQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/FakeKeyguardQuickAffordanceConfig.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/FlashlightQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/HomeControlsKeyguardQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLegacySettingSyncerTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceLocalUserSelectionManagerTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/KeyguardQuickAffordanceRemoteUserSelectionManagerTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/QrCodeScannerKeyguardQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/quickaffordance/QuickAccessWalletKeyguardQuickAffordanceConfigTest.kt",
"tests/src/com/android/systemui/keyguard/data/repository/KeyguardQuickAffordanceRepositoryTest.kt",
"tests/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryImplTest.kt",
// domain
"tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/LightRevealScrimInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/quickaffordance/FakeKeyguardQuickAffordanceRegistry.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt",
"tests/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractorWithCoroutinesTest.kt",
// ui
"tests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt",
"tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBouncerViewModelTest.kt",
"tests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDreamingTransitionViewModelTest.kt",
"tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt",
"tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt",
"tests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt",
],
path: "tests/src",
}
java_library { java_library {
name: "SystemUI-tests-concurrency", name: "SystemUI-tests-concurrency",
srcs: [ srcs: [
@@ -315,8 +354,16 @@ android_app {
defaults: [ defaults: [
"platform_app_defaults", "platform_app_defaults",
"SystemUI_app_defaults", "SystemUI_app_defaults",
"SystemUI_compose_defaults",
], ],
manifest: "tests/AndroidManifest-base.xml", manifest: "tests/AndroidManifest-base.xml",
srcs: [
"src/**/*.kt",
"src/**/*.java",
"src/**/I*.aidl",
":ReleaseJavaFiles",
],
static_libs: [ static_libs: [
"SystemUI-tests-base", "SystemUI-tests-base",
], ],
@@ -330,6 +377,9 @@ android_app {
certificate: "platform", certificate: "platform",
privileged: true, privileged: true,
resource_dirs: [], resource_dirs: [],
kotlincflags: ["-Xjvm-default=all"],
plugins: ["dagger2-compiler"],
} }
android_robolectric_test { android_robolectric_test {
@@ -337,6 +387,13 @@ android_robolectric_test {
srcs: [ srcs: [
"tests/robolectric/src/**/*.kt", "tests/robolectric/src/**/*.kt",
"tests/robolectric/src/**/*.java", "tests/robolectric/src/**/*.java",
":SystemUI-tests-utils",
":SystemUI-tests-robolectric-pilots",
],
static_libs: [
"androidx.test.uiautomator_uiautomator",
"androidx.test.ext.junit",
"inline-mockito-robolectric-prebuilt",
], ],
libs: [ libs: [
"android.test.runner", "android.test.runner",
@@ -344,7 +401,9 @@ android_robolectric_test {
"android.test.mock", "android.test.mock",
"truth-prebuilt", "truth-prebuilt",
], ],
kotlincflags: ["-Xjvm-default=enable"],
upstream: true,
instrumentation_for: "SystemUIRobo-stub", instrumentation_for: "SystemUIRobo-stub",
java_resource_dirs: ["tests/robolectric/config"], java_resource_dirs: ["tests/robolectric/config"],
} }

View File

@@ -20,6 +20,7 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.app.StatusBarManager import android.app.StatusBarManager
import android.content.Context import android.content.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
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.camera.CameraGestureHelper import com.android.systemui.camera.CameraGestureHelper
@@ -31,14 +32,13 @@ import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class CameraQuickAffordanceConfigTest : SysuiTestCase() { class CameraQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var cameraGestureHelper: CameraGestureHelper @Mock private lateinit var cameraGestureHelper: CameraGestureHelper

View File

@@ -22,6 +22,7 @@ import android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
import android.provider.Settings.Global.ZEN_MODE_OFF import android.provider.Settings.Global.ZEN_MODE_OFF
import android.provider.Settings.Secure.ZEN_DURATION_FOREVER import android.provider.Settings.Secure.ZEN_DURATION_FOREVER
import android.provider.Settings.Secure.ZEN_DURATION_PROMPT import android.provider.Settings.Secure.ZEN_DURATION_PROMPT
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.settingslib.notification.EnableZenModeDialog import com.android.settingslib.notification.EnableZenModeDialog
import com.android.systemui.R import com.android.systemui.R
@@ -51,7 +52,6 @@ import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentCaptor import org.mockito.ArgumentCaptor
import org.mockito.Captor import org.mockito.Captor
import org.mockito.Mock import org.mockito.Mock
@@ -60,7 +60,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class DoNotDisturbQuickAffordanceConfigTest : SysuiTestCase() { class DoNotDisturbQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var zenModeController: ZenModeController @Mock private lateinit var zenModeController: ZenModeController

View File

@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.data.quickaffordance package com.android.systemui.keyguard.data.quickaffordance
import android.content.Context import android.content.Context
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.Icon
@@ -35,13 +36,12 @@ import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class FlashlightQuickAffordanceConfigTest : LeakCheckedTest() { class FlashlightQuickAffordanceConfigTest : LeakCheckedTest() {
@Mock private lateinit var context: Context @Mock private lateinit var context: Context

View File

@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.data.quickaffordance package com.android.systemui.keyguard.data.quickaffordance
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -34,13 +35,12 @@ import kotlinx.coroutines.test.runBlockingTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.`when` as whenever import org.mockito.Mockito.`when` as whenever
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class HomeControlsKeyguardQuickAffordanceConfigTest : SysuiTestCase() { class HomeControlsKeyguardQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var component: ControlsComponent @Mock private lateinit var component: ControlsComponent

View File

@@ -20,6 +20,7 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.content.Context import android.content.Context
import android.content.res.Resources import android.content.res.Resources
import android.provider.Settings import android.provider.Settings
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -40,7 +41,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock import org.mockito.Mock
@@ -48,7 +48,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceLegacySettingSyncerTest : SysuiTestCase() { class KeyguardQuickAffordanceLegacySettingSyncerTest : SysuiTestCase() {
@Mock private lateinit var sharedPrefs: FakeSharedPreferences @Mock private lateinit var sharedPrefs: FakeSharedPreferences

View File

@@ -20,6 +20,7 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.content.pm.UserInfo import android.content.pm.UserInfo
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -40,7 +41,6 @@ import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock import org.mockito.Mock
@@ -51,7 +51,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceLocalUserSelectionManagerTest : SysuiTestCase() { class KeyguardQuickAffordanceLocalUserSelectionManagerTest : SysuiTestCase() {
@Mock private lateinit var userFileManager: UserFileManager @Mock private lateinit var userFileManager: UserFileManager

View File

@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.content.pm.UserInfo import android.content.pm.UserInfo
import android.os.UserHandle import android.os.UserHandle
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.settings.FakeUserTracker import com.android.systemui.settings.FakeUserTracker
@@ -37,13 +38,12 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceRemoteUserSelectionManagerTest : SysuiTestCase() { class KeyguardQuickAffordanceRemoteUserSelectionManagerTest : SysuiTestCase() {
@Mock private lateinit var userHandle: UserHandle @Mock private lateinit var userHandle: UserHandle

View File

@@ -21,6 +21,7 @@ import android.content.Context
import android.media.AudioManager import android.media.AudioManager
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
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.flags.FeatureFlags import com.android.systemui.flags.FeatureFlags
@@ -47,7 +48,6 @@ import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyZeroInteractions import org.mockito.Mockito.verifyZeroInteractions
@@ -55,7 +55,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class MuteQuickAffordanceCoreStartableTest : SysuiTestCase() { class MuteQuickAffordanceCoreStartableTest : SysuiTestCase() {
@Mock @Mock

View File

@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.data.quickaffordance package com.android.systemui.keyguard.data.quickaffordance
import android.content.Intent import android.content.Intent
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.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig.OnTriggeredResult import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig.OnTriggeredResult
@@ -33,13 +34,12 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class QrCodeScannerKeyguardQuickAffordanceConfigTest : SysuiTestCase() { class QrCodeScannerKeyguardQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var controller: QRCodeScannerController @Mock private lateinit var controller: QRCodeScannerController

View File

@@ -20,6 +20,7 @@ package com.android.systemui.keyguard.data.quickaffordance
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.service.quickaccesswallet.GetWalletCardsResponse import android.service.quickaccesswallet.GetWalletCardsResponse
import android.service.quickaccesswallet.QuickAccessWalletClient import android.service.quickaccesswallet.QuickAccessWalletClient
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -41,14 +42,13 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class QuickAccessWalletKeyguardQuickAffordanceConfigTest : SysuiTestCase() { class QuickAccessWalletKeyguardQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var walletController: QuickAccessWalletController @Mock private lateinit var walletController: QuickAccessWalletController

View File

@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.data.quickaffordance package com.android.systemui.keyguard.data.quickaffordance
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.ActivityIntentHelper import com.android.systemui.ActivityIntentHelper
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -32,7 +33,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock import org.mockito.Mock
@@ -40,7 +40,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class VideoCameraQuickAffordanceConfigTest : SysuiTestCase() { class VideoCameraQuickAffordanceConfigTest : SysuiTestCase() {
@Mock private lateinit var activityIntentHelper: ActivityIntentHelper @Mock private lateinit var activityIntentHelper: ActivityIntentHelper

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.data.repository package com.android.systemui.keyguard.data.repository
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.keyguard.ViewMediatorCallback import com.android.keyguard.ViewMediatorCallback
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -26,13 +27,12 @@ import kotlinx.coroutines.test.TestCoroutineScope
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardBouncerRepositoryTest : SysuiTestCase() { class KeyguardBouncerRepositoryTest : SysuiTestCase() {
@Mock private lateinit var systemClock: SystemClock @Mock private lateinit var systemClock: SystemClock

View File

@@ -19,9 +19,11 @@ package com.android.systemui.keyguard.data.repository
import android.content.pm.UserInfo import android.content.pm.UserInfo
import android.os.UserHandle import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.R import com.android.systemui.R
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceConfig import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceConfig
import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceProviderClientFactory import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffordanceProviderClientFactory
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig
@@ -39,23 +41,19 @@ import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.settings.FakeSettings import com.android.systemui.util.settings.FakeSettings
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.test.StandardTestDispatcher
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.test.TestScope
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.yield
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() { class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
private lateinit var underTest: KeyguardQuickAffordanceRepository private lateinit var underTest: KeyguardQuickAffordanceRepository
@@ -65,12 +63,14 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
private lateinit var userTracker: FakeUserTracker private lateinit var userTracker: FakeUserTracker
private lateinit var client1: FakeCustomizationProviderClient private lateinit var client1: FakeCustomizationProviderClient
private lateinit var client2: FakeCustomizationProviderClient private lateinit var client2: FakeCustomizationProviderClient
private lateinit var testScope: TestScope
@Before @Before
fun setUp() { fun setUp() {
config1 = FakeKeyguardQuickAffordanceConfig(FakeCustomizationProviderClient.AFFORDANCE_1) config1 = FakeKeyguardQuickAffordanceConfig(FakeCustomizationProviderClient.AFFORDANCE_1)
config2 = FakeKeyguardQuickAffordanceConfig(FakeCustomizationProviderClient.AFFORDANCE_2) config2 = FakeKeyguardQuickAffordanceConfig(FakeCustomizationProviderClient.AFFORDANCE_2)
val scope = CoroutineScope(IMMEDIATE) val testDispatcher = StandardTestDispatcher()
testScope = TestScope(testDispatcher)
userTracker = FakeUserTracker() userTracker = FakeUserTracker()
val localUserSelectionManager = val localUserSelectionManager =
KeyguardQuickAffordanceLocalUserSelectionManager( KeyguardQuickAffordanceLocalUserSelectionManager(
@@ -93,7 +93,7 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
client2 = FakeCustomizationProviderClient() client2 = FakeCustomizationProviderClient()
val remoteUserSelectionManager = val remoteUserSelectionManager =
KeyguardQuickAffordanceRemoteUserSelectionManager( KeyguardQuickAffordanceRemoteUserSelectionManager(
scope = scope, scope = testScope.backgroundScope,
userTracker = userTracker, userTracker = userTracker,
clientFactory = clientFactory =
FakeKeyguardQuickAffordanceProviderClientFactory( FakeKeyguardQuickAffordanceProviderClientFactory(
@@ -116,14 +116,14 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
underTest = underTest =
KeyguardQuickAffordanceRepository( KeyguardQuickAffordanceRepository(
appContext = context, appContext = context,
scope = scope, scope = testScope.backgroundScope,
localUserSelectionManager = localUserSelectionManager, localUserSelectionManager = localUserSelectionManager,
remoteUserSelectionManager = remoteUserSelectionManager, remoteUserSelectionManager = remoteUserSelectionManager,
userTracker = userTracker, userTracker = userTracker,
legacySettingSyncer = legacySettingSyncer =
KeyguardQuickAffordanceLegacySettingSyncer( KeyguardQuickAffordanceLegacySettingSyncer(
scope = scope, scope = testScope.backgroundScope,
backgroundDispatcher = IMMEDIATE, backgroundDispatcher = testDispatcher,
secureSettings = FakeSettings(), secureSettings = FakeSettings(),
selectionsManager = localUserSelectionManager, selectionsManager = localUserSelectionManager,
), ),
@@ -135,15 +135,14 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
@Test @Test
fun setSelections() = fun setSelections() =
runBlocking(IMMEDIATE) { testScope.runTest {
var configsBySlotId: Map<String, List<KeyguardQuickAffordanceConfig>>? = null val configsBySlotId = collectLastValue(underTest.selections)
val job = underTest.selections.onEach { configsBySlotId = it }.launchIn(this)
val slotId1 = "slot1" val slotId1 = "slot1"
val slotId2 = "slot2" val slotId2 = "slot2"
underTest.setSelections(slotId1, listOf(config1.key)) underTest.setSelections(slotId1, listOf(config1.key))
assertSelections( assertSelections(
configsBySlotId, configsBySlotId(),
mapOf( mapOf(
slotId1 to listOf(config1), slotId1 to listOf(config1),
), ),
@@ -151,7 +150,7 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
underTest.setSelections(slotId2, listOf(config2.key)) underTest.setSelections(slotId2, listOf(config2.key))
assertSelections( assertSelections(
configsBySlotId, configsBySlotId(),
mapOf( mapOf(
slotId1 to listOf(config1), slotId1 to listOf(config1),
slotId2 to listOf(config2), slotId2 to listOf(config2),
@@ -161,19 +160,17 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
underTest.setSelections(slotId1, emptyList()) underTest.setSelections(slotId1, emptyList())
underTest.setSelections(slotId2, listOf(config1.key)) underTest.setSelections(slotId2, listOf(config1.key))
assertSelections( assertSelections(
configsBySlotId, configsBySlotId(),
mapOf( mapOf(
slotId1 to emptyList(), slotId1 to emptyList(),
slotId2 to listOf(config1), slotId2 to listOf(config1),
), ),
) )
job.cancel()
} }
@Test @Test
fun getAffordancePickerRepresentations() = fun getAffordancePickerRepresentations() =
runBlocking(IMMEDIATE) { testScope.runTest {
assertThat(underTest.getAffordancePickerRepresentations()) assertThat(underTest.getAffordancePickerRepresentations())
.isEqualTo( .isEqualTo(
listOf( listOf(
@@ -226,7 +223,7 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
@Test @Test
fun `selections for secondary user`() = fun `selections for secondary user`() =
runBlocking(IMMEDIATE) { testScope.runTest {
userTracker.set( userTracker.set(
userInfos = userInfos =
listOf( listOf(
@@ -252,12 +249,10 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START, slotId = KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START,
affordanceId = FakeCustomizationProviderClient.AFFORDANCE_2, affordanceId = FakeCustomizationProviderClient.AFFORDANCE_2,
) )
val observed = mutableListOf<Map<String, List<KeyguardQuickAffordanceConfig>>>() val observed = collectLastValue(underTest.selections)
val job = underTest.selections.onEach { observed.add(it) }.launchIn(this)
yield()
assertSelections( assertSelections(
observed = observed.last(), observed = observed(),
expected = expected =
mapOf( mapOf(
KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to KeyguardQuickAffordanceSlots.SLOT_ID_BOTTOM_START to
@@ -266,8 +261,6 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
), ),
) )
) )
job.cancel()
} }
private fun assertSelections( private fun assertSelections(
@@ -283,7 +276,6 @@ class KeyguardQuickAffordanceRepositoryTest : SysuiTestCase() {
} }
companion object { companion object {
private val IMMEDIATE = Dispatchers.Main.immediate
private const val SECONDARY_USER_1 = UserHandle.MIN_SECONDARY_USER_ID + 1 private const val SECONDARY_USER_1 = UserHandle.MIN_SECONDARY_USER_ID + 1
private const val SECONDARY_USER_2 = UserHandle.MIN_SECONDARY_USER_ID + 2 private const val SECONDARY_USER_2 = UserHandle.MIN_SECONDARY_USER_ID + 2
} }

View File

@@ -18,6 +18,7 @@ package com.android.systemui.keyguard.data.repository
import android.graphics.Point import android.graphics.Point
import android.hardware.biometrics.BiometricSourceType import android.hardware.biometrics.BiometricSourceType
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback import com.android.keyguard.KeyguardUpdateMonitorCallback
@@ -54,13 +55,12 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardRepositoryImplTest : SysuiTestCase() { class KeyguardRepositoryImplTest : SysuiTestCase() {
@Mock private lateinit var statusBarStateController: StatusBarStateController @Mock private lateinit var statusBarStateController: StatusBarStateController

View File

@@ -20,6 +20,7 @@ import android.animation.ValueAnimator
import android.util.Log import android.util.Log
import android.util.Log.TerribleFailure import android.util.Log.TerribleFailure
import android.util.Log.TerribleFailureHandler import android.util.Log.TerribleFailureHandler
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.animation.Interpolators import com.android.systemui.animation.Interpolators
@@ -43,10 +44,9 @@ import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardTransitionRepositoryTest : SysuiTestCase() { class KeyguardTransitionRepositoryTest : SysuiTestCase() {
private lateinit var underTest: KeyguardTransitionRepository private lateinit var underTest: KeyguardTransitionRepository

View File

@@ -18,6 +18,7 @@ package com.android.systemui.keyguard.data.repository
import android.app.trust.TrustManager import android.app.trust.TrustManager
import android.content.pm.UserInfo import android.content.pm.UserInfo
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.keyguard.logging.TrustRepositoryLogger import com.android.keyguard.logging.TrustRepositoryLogger
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -33,7 +34,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentCaptor import org.mockito.ArgumentCaptor
import org.mockito.Captor import org.mockito.Captor
import org.mockito.Mock import org.mockito.Mock
@@ -43,7 +43,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class TrustRepositoryTest : SysuiTestCase() { class TrustRepositoryTest : SysuiTestCase() {
@Mock private lateinit var trustManager: TrustManager @Mock private lateinit var trustManager: TrustManager
@Captor private lateinit var listenerCaptor: ArgumentCaptor<TrustManager.TrustListener> @Captor private lateinit var listenerCaptor: ArgumentCaptor<TrustManager.TrustListener>

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.ViewMediatorCallback import com.android.keyguard.ViewMediatorCallback
@@ -36,14 +37,13 @@ import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class AlternateBouncerInteractorTest : SysuiTestCase() { class AlternateBouncerInteractorTest : SysuiTestCase() {
private lateinit var underTest: AlternateBouncerInteractor private lateinit var underTest: AlternateBouncerInteractor
private lateinit var bouncerRepository: KeyguardBouncerRepository private lateinit var bouncerRepository: KeyguardBouncerRepository

View File

@@ -19,6 +19,7 @@ package com.android.systemui.keyguard.domain.interactor
import android.app.StatusBarManager import android.app.StatusBarManager
import android.content.Context import android.content.Context
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.coroutines.collectLastValue import com.android.systemui.coroutines.collectLastValue
@@ -36,12 +37,12 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardInteractorTest : SysuiTestCase() { class KeyguardInteractorTest : SysuiTestCase() {
private lateinit var commandQueue: FakeCommandQueue private lateinit var commandQueue: FakeCommandQueue
private lateinit var featureFlags: FakeFeatureFlags private lateinit var featureFlags: FakeFeatureFlags

View File

@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
import android.content.Intent import android.content.Intent
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.logging.UiEventLogger import com.android.internal.logging.UiEventLogger
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
@@ -39,7 +40,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.never import org.mockito.Mockito.never
@@ -48,7 +48,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardLongPressInteractorTest : SysuiTestCase() { class KeyguardLongPressInteractorTest : SysuiTestCase() {
@Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var activityStarter: ActivityStarter

View File

@@ -18,6 +18,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
import android.os.UserHandle import android.os.UserHandle
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.internal.widget.LockPatternUtils import com.android.internal.widget.LockPatternUtils
import com.android.systemui.R import com.android.systemui.R
@@ -60,7 +61,6 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock import org.mockito.Mock
@@ -68,7 +68,7 @@ import org.mockito.MockitoAnnotations
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
@Mock private lateinit var lockPatternUtils: LockPatternUtils @Mock private lateinit var lockPatternUtils: LockPatternUtils

View File

@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -29,17 +30,17 @@ import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
import com.android.systemui.keyguard.shared.model.TransitionState.STARTED import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
import com.android.systemui.keyguard.shared.model.TransitionStep import com.android.systemui.keyguard.shared.model.TransitionStep
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.test.UnconfinedTestDispatcher
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardTransitionInteractorTest : SysuiTestCase() { class KeyguardTransitionInteractorTest : SysuiTestCase() {
private lateinit var underTest: KeyguardTransitionInteractor private lateinit var underTest: KeyguardTransitionInteractor
@@ -53,7 +54,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test @Test
fun `transition collectors receives only appropriate events`() = fun `transition collectors receives only appropriate events`() =
runBlocking(IMMEDIATE) { runTest(UnconfinedTestDispatcher()) {
var lockscreenToAodSteps = mutableListOf<TransitionStep>() var lockscreenToAodSteps = mutableListOf<TransitionStep>()
val job1 = val job1 =
underTest.lockscreenToAodTransition underTest.lockscreenToAodTransition
@@ -87,10 +88,9 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test @Test
fun dozeAmountTransitionTest() = fun dozeAmountTransitionTest() =
runBlocking(IMMEDIATE) { runTest(UnconfinedTestDispatcher()) {
var dozeAmountSteps = mutableListOf<TransitionStep>() var dozeAmountSteps = mutableListOf<TransitionStep>()
val job = val job = underTest.dozeAmountTransition.onEach { dozeAmountSteps.add(it) }.launchIn(this)
underTest.dozeAmountTransition.onEach { dozeAmountSteps.add(it) }.launchIn(this)
val steps = mutableListOf<TransitionStep>() val steps = mutableListOf<TransitionStep>()
@@ -119,10 +119,9 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test @Test
fun keyguardStateTests() = fun keyguardStateTests() =
runBlocking(IMMEDIATE) { runTest(UnconfinedTestDispatcher()) {
var finishedSteps = mutableListOf<KeyguardState>() var finishedSteps = mutableListOf<KeyguardState>()
val job = val job = underTest.finishedKeyguardState.onEach { finishedSteps.add(it) }.launchIn(this)
underTest.finishedKeyguardState.onEach { finishedSteps.add(it) }.launchIn(this)
val steps = mutableListOf<TransitionStep>() val steps = mutableListOf<TransitionStep>()
@@ -143,12 +142,10 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test @Test
fun finishedKeyguardTransitionStepTests() = fun finishedKeyguardTransitionStepTests() =
runBlocking(IMMEDIATE) { runTest(UnconfinedTestDispatcher()) {
var finishedSteps = mutableListOf<TransitionStep>() var finishedSteps = mutableListOf<TransitionStep>()
val job = val job =
underTest.finishedKeyguardTransitionStep underTest.finishedKeyguardTransitionStep.onEach { finishedSteps.add(it) }.launchIn(this)
.onEach { finishedSteps.add(it) }
.launchIn(this)
val steps = mutableListOf<TransitionStep>() val steps = mutableListOf<TransitionStep>()
@@ -169,12 +166,10 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test @Test
fun startedKeyguardTransitionStepTests() = fun startedKeyguardTransitionStepTests() =
runBlocking(IMMEDIATE) { runTest(UnconfinedTestDispatcher()) {
var startedSteps = mutableListOf<TransitionStep>() var startedSteps = mutableListOf<TransitionStep>()
val job = val job =
underTest.startedKeyguardTransitionStep underTest.startedKeyguardTransitionStep.onEach { startedSteps.add(it) }.launchIn(this)
.onEach { startedSteps.add(it) }
.launchIn(this)
val steps = mutableListOf<TransitionStep>() val steps = mutableListOf<TransitionStep>()
@@ -192,8 +187,4 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
job.cancel() job.cancel()
} }
companion object {
private val IMMEDIATE = Dispatchers.Main.immediate
}
} }

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -33,11 +34,10 @@ import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class LightRevealScrimInteractorTest : SysuiTestCase() { class LightRevealScrimInteractorTest : SysuiTestCase() {
private val fakeKeyguardTransitionRepository = FakeKeyguardTransitionRepository() private val fakeKeyguardTransitionRepository = FakeKeyguardTransitionRepository()
private val fakeLightRevealScrimRepository = FakeLightRevealScrimRepository() private val fakeLightRevealScrimRepository = FakeLightRevealScrimRepository()

View File

@@ -17,18 +17,18 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
import android.view.View import android.view.View
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 org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class PrimaryBouncerCallbackInteractorTest : SysuiTestCase() { class PrimaryBouncerCallbackInteractorTest : SysuiTestCase() {
private val mPrimaryBouncerCallbackInteractor = PrimaryBouncerCallbackInteractor() private val mPrimaryBouncerCallbackInteractor = PrimaryBouncerCallbackInteractor()
@Mock @Mock

View File

@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.domain.interactor package com.android.systemui.keyguard.domain.interactor
import android.os.Looper import android.os.Looper
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.keyguard.KeyguardSecurityModel import com.android.keyguard.KeyguardSecurityModel
import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor
@@ -35,12 +36,11 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class PrimaryBouncerInteractorWithCoroutinesTest : SysuiTestCase() { class PrimaryBouncerInteractorWithCoroutinesTest : SysuiTestCase() {
private lateinit var repository: FakeKeyguardBouncerRepository private lateinit var repository: FakeKeyguardBouncerRepository
@Mock private lateinit var bouncerView: BouncerView @Mock private lateinit var bouncerView: BouncerView

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -33,10 +34,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class DreamingToLockscreenTransitionViewModelTest : SysuiTestCase() { class DreamingToLockscreenTransitionViewModelTest : SysuiTestCase() {
private lateinit var underTest: DreamingToLockscreenTransitionViewModel private lateinit var underTest: DreamingToLockscreenTransitionViewModel
private lateinit var repository: FakeKeyguardTransitionRepository private lateinit var repository: FakeKeyguardTransitionRepository

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -32,10 +33,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class GoneToDreamingTransitionViewModelTest : SysuiTestCase() { class GoneToDreamingTransitionViewModelTest : SysuiTestCase() {
private lateinit var underTest: GoneToDreamingTransitionViewModel private lateinit var underTest: GoneToDreamingTransitionViewModel
private lateinit var repository: FakeKeyguardTransitionRepository private lateinit var repository: FakeKeyguardTransitionRepository

View File

@@ -16,28 +16,29 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.BouncerView import com.android.systemui.keyguard.data.BouncerView
import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerInteractor import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel import com.android.systemui.keyguard.shared.model.BouncerShowMessageModel
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito import org.mockito.Mockito
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
@kotlinx.coroutines.ExperimentalCoroutinesApi
class KeyguardBouncerViewModelTest : SysuiTestCase() { class KeyguardBouncerViewModelTest : SysuiTestCase() {
lateinit var underTest: KeyguardBouncerViewModel lateinit var underTest: KeyguardBouncerViewModel
@Mock lateinit var bouncerView: BouncerView @Mock lateinit var bouncerView: BouncerView
@@ -51,7 +52,7 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() {
@Test @Test
fun setMessage() = fun setMessage() =
runBlocking(Dispatchers.Main.immediate) { runTest {
val flow = MutableStateFlow<BouncerShowMessageModel?>(null) val flow = MutableStateFlow<BouncerShowMessageModel?>(null)
var message: BouncerShowMessageModel? = null var message: BouncerShowMessageModel? = null
Mockito.`when`(bouncerInteractor.showMessage) Mockito.`when`(bouncerInteractor.showMessage)
@@ -62,6 +63,8 @@ class KeyguardBouncerViewModelTest : SysuiTestCase() {
flow.value = BouncerShowMessageModel(message = "abc", colorStateList = null) flow.value = BouncerShowMessageModel(message = "abc", colorStateList = null)
val job = underTest.bouncerShowMessage.onEach { message = it }.launchIn(this) val job = underTest.bouncerShowMessage.onEach { message = it }.launchIn(this)
// Run the tasks that are pending at this point of virtual time.
runCurrent()
assertThat(message?.message).isEqualTo("abc") assertThat(message?.message).isEqualTo("abc")
job.cancel() job.cancel()
} }

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -32,10 +33,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class LockscreenToDreamingTransitionViewModelTest : SysuiTestCase() { class LockscreenToDreamingTransitionViewModelTest : SysuiTestCase() {
private lateinit var underTest: LockscreenToDreamingTransitionViewModel private lateinit var underTest: LockscreenToDreamingTransitionViewModel
private lateinit var repository: FakeKeyguardTransitionRepository private lateinit var repository: FakeKeyguardTransitionRepository

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -32,10 +33,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class LockscreenToOccludedTransitionViewModelTest : SysuiTestCase() { class LockscreenToOccludedTransitionViewModelTest : SysuiTestCase() {
private lateinit var underTest: LockscreenToOccludedTransitionViewModel private lateinit var underTest: LockscreenToOccludedTransitionViewModel
private lateinit var repository: FakeKeyguardTransitionRepository private lateinit var repository: FakeKeyguardTransitionRepository

View File

@@ -16,6 +16,7 @@
package com.android.systemui.keyguard.ui.viewmodel package com.android.systemui.keyguard.ui.viewmodel
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.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -32,10 +33,9 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@SmallTest @SmallTest
@RunWith(JUnit4::class) @RunWith(AndroidJUnit4::class)
class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() { class OccludedToLockscreenTransitionViewModelTest : SysuiTestCase() {
private lateinit var underTest: OccludedToLockscreenTransitionViewModel private lateinit var underTest: OccludedToLockscreenTransitionViewModel
private lateinit var repository: FakeKeyguardTransitionRepository private lateinit var repository: FakeKeyguardTransitionRepository

View File

@@ -49,14 +49,15 @@ public class TestableSettingsProvider extends MockContentProvider {
} }
void clearValuesAndCheck(Context context) { void clearValuesAndCheck(Context context) {
int userId = UserHandle.myUserId(); // Ensure we swapped over to use TestableSettingsProvider
mValues.put(key("global", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY);
mValues.put(key("secure", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY);
mValues.put(key("system", MY_UNIQUE_KEY, userId), MY_UNIQUE_KEY);
Settings.Global.clearProviderForTest(); Settings.Global.clearProviderForTest();
Settings.Secure.clearProviderForTest(); Settings.Secure.clearProviderForTest();
Settings.System.clearProviderForTest(); Settings.System.clearProviderForTest();
// putString will eventually invoking the mocked call() method and update mValues
Settings.Global.putString(context.getContentResolver(), MY_UNIQUE_KEY, MY_UNIQUE_KEY);
Settings.Secure.putString(context.getContentResolver(), MY_UNIQUE_KEY, MY_UNIQUE_KEY);
Settings.System.putString(context.getContentResolver(), MY_UNIQUE_KEY, MY_UNIQUE_KEY);
// Verify that if any test is using TestableContext, they all have the correct settings // Verify that if any test is using TestableContext, they all have the correct settings
// provider. // provider.
assertEquals("Incorrect settings provider, test using incorrect Context?", MY_UNIQUE_KEY, assertEquals("Incorrect settings provider, test using incorrect Context?", MY_UNIQUE_KEY,