Check call audio main ownership and the late Telecom handoff

This commit is contained in:
evgeny committed 2026-10-29 13:34:23 +01:00
1 parent 326bfd124e
commit 94b5d44fe7
1 file changed
+19
@@ -205,4 +205,23 @@ class CallAudioLifecycleTest {
assertTrue(diagnostic("record stop failed")); assertTrue(diagnostic("track pause failed"))
assertEquals(1, stops())
}
@Test fun zeroCallIdCannotAcquireResourcesAndBackgroundStopCannotReleaseThem() {
assertThrows(IllegalArgumentException::class.java) { engine.start(0) }
assertTrue(NativeLib.callAudioCommands.isEmpty()); assertTrue(diagnostic("zero call id"))
start()
var failure: Exception? = null
Thread { try { engine.stop() } catch (e: Exception) { failure = e } }.apply { start(); join() }
assertTrue(failure is IllegalStateException); assertTrue(engine.isActive()); assertEquals(0, stops())
assertFalse(AudioRecord.created.single().released); assertTrue(diagnostic("stop outside main"))
}
@Test fun lateTelecomOwnershipPreventsRestoringTheFallbackModeDuringStop() {
start()
engine.bindTelecom(UtunConnection())
manager.mode = AudioManager.MODE_IN_COMMUNICATION
engine.stop()
assertEquals(AudioManager.MODE_IN_COMMUNICATION, manager.mode)
assertEquals(false, field("modeOwned")); assertEquals(1, stops())
}
}