Cover partial communication selection and SCO cleanup effects

This commit is contained in:
evgeny committed 2026-10-29 13:34:23 +01:00
1 parent 8cdb4190b6
commit e660f8f762
1 file changed
+27
@@ -187,4 +187,31 @@ class CallAudioRouterCleanupTest {
val clears = operation("clear")
router.stop(); assertEquals(clears, operation("clear")); assertFalse(router.cleanupPending)
}
@Test fun communicationSelectionFailureAfterItsEffectRollsBackTheOwnedDevice() {
audio.failures = setOf("select after=1", "clear")
assertThrows(IllegalStateException::class.java) { router.start() }
assertNotNull(audio.communicationDevice); assertTrue(router.cleanupPending); assertTrue(audio.callbacks.isEmpty())
audio.failures = emptySet(); router.stop()
assertNull(audio.communicationDevice); assertFalse(router.cleanupPending)
}
@Test fun communicationReleaseAfterEffectStillNeedsASuccessfulAcknowledgment() {
router.start(); adapter.connect(0)
audio.failures = setOf("clear after"); stopRejected()
assertNull(audio.communicationDevice); assertTrue(router.cleanupPending)
audio.failures = emptySet(); router.stop()
assertFalse(router.cleanupPending); assertEquals(2, operation("clear"))
}
@Test fun legacyScoEffectsAndIndependentAcknowledgmentsSurviveAfterEffectFailures() {
Build.VERSION.SDK_INT = 30
router.start(); adapter.connect(0)
audio.failures = setOf("start sco after"); router.setRoute(AudioRoute.HEADSET)
assertTrue(audio.legacyScoStarted)
audio.failures = setOf("stop sco after", "sco after=false"); stopRejected()
assertFalse(audio.legacyScoStarted); assertFalse(audio.isBluetoothScoOn); assertTrue(router.cleanupPending)
audio.failures = emptySet(); router.stop()
assertFalse(router.cleanupPending); assertEquals(2, operation("stop sco")); assertEquals(2, operation("sco=false"))
}
}