diff --git a/tools/chatgui-android/call-service-tests/src/main/kotlin/com/utun/chat/data/CallServiceHost.kt b/tools/chatgui-android/call-service-tests/src/main/kotlin/com/utun/chat/data/CallServiceHost.kt index 5704e255..413533eb 100644 --- a/tools/chatgui-android/call-service-tests/src/main/kotlin/com/utun/chat/data/CallServiceHost.kt +++ b/tools/chatgui-android/call-service-tests/src/main/kotlin/com/utun/chat/data/CallServiceHost.kt @@ -4,6 +4,7 @@ import android.content.Context import java.util.concurrent.CompletableFuture import java.util.concurrent.Future import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.first /** Только DSP/camera/Telecom и чужие media. CallService/CallController/CoreActivity компилируются из приложения. */ object AppLanguage { diff --git a/tools/chatgui-android/call-service-tests/src/test/kotlin/com/utun/chat/data/CallServiceLifecycleTest.kt b/tools/chatgui-android/call-service-tests/src/test/kotlin/com/utun/chat/data/CallServiceLifecycleTest.kt index a77b8d9a..7302e41b 100644 --- a/tools/chatgui-android/call-service-tests/src/test/kotlin/com/utun/chat/data/CallServiceLifecycleTest.kt +++ b/tools/chatgui-android/call-service-tests/src/test/kotlin/com/utun/chat/data/CallServiceLifecycleTest.kt @@ -270,6 +270,16 @@ class CallServiceLifecycleTest { assertFalse(CallController.blocksMedia()) } + @Test fun radioRestorationAlsoWaitsForTheTelecomConnectionCleanup() { + val radio = RadioAudioEngine.instance(); radio.activeGroup.value = 7 + active(); TelecomCallManager.pending = true; CallController.end(); dispatcher.scheduler.runCurrent() + assertEquals(CallPhase.ENDED, state?.phase); assertFalse(CallService.cleanupPending()) + assertTrue(CallController.blocksMedia()); assertTrue(radio.restored.isEmpty()) + TelecomCallManager.pending = false + await("radio restored after Telecom cleanup") { radio.restored == listOf(7L) } + assertFalse(CallController.blocksMedia()) + } + @Test fun unexpectedDestroyStillRetainsFailedCleanupAndEndsTheControllerSession() { val service = active(); service.audio.failures = setOf("stop") service.onDestroy()