Compile the real SIM monitor in the Android host tests
This commit is contained in:
1 parent
6e6260ab29
commit
6a38eaa4eb
3 files changed
+17
-2
No files matched your search
@@ -7,9 +7,9 @@ kotlin {
|
||||
sourceSets.named("main") {
|
||||
// Компилируем настоящие компоненты приложения; Android fixtures существуют только в этом JVM-модуле.
|
||||
kotlin.srcDir(providers.gradleProperty("routerSourceDir").getOrElse("../app/src/main/java"))
|
||||
kotlin.include("android/**", "com/utun/chat/RouterHostApp.kt", "com/utun/chat/data/RouterHostEnvironment.kt",
|
||||
kotlin.include("android/**", "androidx/**", "com/utun/chat/RouterHostApp.kt", "com/utun/chat/data/RouterHostEnvironment.kt",
|
||||
"com/utun/chat/data/CallAudioRouter.kt", "com/utun/chat/data/CoreActivity.kt",
|
||||
"com/utun/chat/data/ProximityManager.kt",
|
||||
"com/utun/chat/data/ProximityManager.kt", "com/utun/chat/data/PhoneStateMonitor.kt",
|
||||
"com/utun/chat/data/NetworkActivityMonitor.kt", "com/utun/chat/data/NetworkChangeMonitor.kt")
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ providers.gradleProperty("routerTestsBuildDir").orNull?.let { layout.buildDirect
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
|
||||
@@ -3,6 +3,8 @@ package android.content
|
||||
import android.media.AudioManager
|
||||
import android.net.ConnectivityManager
|
||||
import android.hardware.SensorManager
|
||||
import android.telephony.SubscriptionManager
|
||||
import android.telephony.TelephonyManager
|
||||
import com.utun.chat.data.HostConfigProvider
|
||||
|
||||
/** Только host-тест: управляемые Android managers, без устройств/разрешений ОС. */
|
||||
@@ -11,6 +13,8 @@ class Context {
|
||||
var permissionGranted = true
|
||||
var connectivityManager: ConnectivityManager? = ConnectivityManager()
|
||||
var sensorManager: SensorManager? = SensorManager()
|
||||
var subscriptionManager: SubscriptionManager? = SubscriptionManager()
|
||||
var telephonyManager: TelephonyManager? = TelephonyManager()
|
||||
val configProvider = HostConfigProvider()
|
||||
val applicationContext: Context get() = this
|
||||
fun getSystemService(name: String): Any? = when (name) {
|
||||
@@ -22,6 +26,8 @@ class Context {
|
||||
return type.cast(when (type) {
|
||||
ConnectivityManager::class.java -> connectivityManager
|
||||
SensorManager::class.java -> sensorManager
|
||||
SubscriptionManager::class.java -> subscriptionManager
|
||||
TelephonyManager::class.java -> telephonyManager
|
||||
else -> error("Unknown service: $type")
|
||||
})
|
||||
}
|
||||
|
||||
+8
@@ -4,6 +4,7 @@ import java.util.Collections
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
||||
/** Минимальная поверхность Telecom; Bluetooth lifecycle не создаёт настоящую Connection. */
|
||||
class UtunConnection {
|
||||
@@ -35,8 +36,14 @@ object NativeLib {
|
||||
var activityAttempts = 0
|
||||
var failActivityRequest = false
|
||||
var acceptActivityRequest = true
|
||||
val phoneRequests = mutableListOf<Pair<Int, Int>>()
|
||||
var acceptPhoneRequest = true
|
||||
fun notifyNetworkActive() { networkNotifications.incrementAndGet() }
|
||||
fun isReady(): Boolean = ready
|
||||
fun setPhoneState(state: Int, policy: Int): Boolean {
|
||||
phoneRequests.add(state to policy)
|
||||
return acceptPhoneRequest
|
||||
}
|
||||
fun updateSockets(config: String): Boolean { socketUpdates.add(config); return acceptSocketUpdate }
|
||||
fun setActive(active: Boolean): Boolean {
|
||||
activityAttempts++
|
||||
@@ -49,6 +56,7 @@ object NativeLib {
|
||||
|
||||
/** Управляемая подготовка конфига: тест удерживает реальный worker, считает перекрытия и затем дожидается его завершения. */
|
||||
class HostConfigProvider {
|
||||
val incomingCallOptions = MutableStateFlow(List(5) { false })
|
||||
val builds = AtomicInteger()
|
||||
val inBuild = AtomicInteger()
|
||||
val maximumConcurrentBuilds = AtomicInteger()
|
||||
|
||||
Reference in new issue
Block a user