feat: кнопка «⏹ Закрыть» в пульте + автоматика обрыва связи (README «Автоматика»)
- GlassesScreen: кнопка ⏹ Закрыть → sendCommand(CLOSE) (обработчики были: телефон audio.stop, очки MovieController.close) - app-glasses: MovieController.pauseIfPlaying()/resume(); HostConnection — при обрыве WS пауза + флаг, при восстановлении — continue (лог «связь потеряна — пауза» / «связь восстановлена — продолжаю»); флаг сбрасывается на PlayVideo/CLOSE - app-phone: ConnectionAutomatics (connectionEvent, авто-resume по флагу «играл ли») + коллектор на hub.connected - Тесты: app-phone 67/0, app-glasses 15/0 - OFF7 3/3: A5 стоп + обрыв-пауза-продолжение подтверждены живым прогоном
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package pw.binom.viewmate.phone
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class ConnectionAutomaticsTest {
|
||||
|
||||
@Test
|
||||
fun connectionEventTransitions() {
|
||||
assertEquals(ConnectionEvent.NONE, connectionEvent(prevConnected = false, nowConnected = false))
|
||||
assertEquals(ConnectionEvent.RESTORED, connectionEvent(prevConnected = false, nowConnected = true))
|
||||
assertEquals(ConnectionEvent.LOST, connectionEvent(prevConnected = true, nowConnected = false))
|
||||
assertEquals(ConnectionEvent.NONE, connectionEvent(prevConnected = true, nowConnected = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun resumeRememberedOnlyWhenSoundWasActiveAndPlaying() {
|
||||
val auto = ConnectionAutoResume()
|
||||
auto.onLost(audioActive = true, wasPlaying = true)
|
||||
assertTrue(auto.resumeAfterReconnect, "плеер был активен и играл — надо продолжить")
|
||||
assertTrue(auto.consumeResume(), "consume отдаёт флаг")
|
||||
assertFalse(auto.resumeAfterReconnect, "consume сбрасывает флаг")
|
||||
assertFalse(auto.consumeResume(), "повторный consume — false")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun noResumeWhenSoundWasPaused() {
|
||||
val auto = ConnectionAutoResume()
|
||||
auto.onLost(audioActive = true, wasPlaying = false)
|
||||
assertFalse(auto.resumeAfterReconnect, "звук был на паузе — не продолжаем")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun noResumeWhenNoAudioPlayer() {
|
||||
val auto = ConnectionAutoResume()
|
||||
auto.onLost(audioActive = false, wasPlaying = true)
|
||||
assertFalse(auto.resumeAfterReconnect, "плеера нет (CLOSE) — нечего продолжать")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun resetClearsFlag() {
|
||||
val auto = ConnectionAutoResume()
|
||||
auto.onLost(audioActive = true, wasPlaying = true)
|
||||
auto.reset()
|
||||
assertFalse(auto.resumeAfterReconnect)
|
||||
assertFalse(auto.consumeResume())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user