fix(app-phone): watch при перезапуске очков — guard по реальному состоянию (shouldSkipReWatch)
Штатный сценарий (подтверждён на железе): очки перезапустились при живом телефоне — audioSync.isActive остаётся true от прошлого просмотра и блокировал watch («пропущено: аудио-плеер уже активен») до перезапуска телефона. - shouldSkipReWatch(playing, positionMs) = playing && positionMs > 0: повторный тап пропускается только если очки реально играют; иначе audioSync.stop() и новый watch - Обрыв-сценарий не затронут (позиция>0 → guard пропускает, resume) - Тесты 70/0 (3 новых); железо: перезапуск очков → тап «Смотреть» → просмотр с 0 + звук синхронен (diff 145)
This commit is contained in:
@@ -2,9 +2,26 @@ package pw.binom.viewmate.phone.ui
|
||||
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class ComponentsTest {
|
||||
|
||||
@Test
|
||||
fun shouldSkipReWatchWhenPlayingWithPosition() {
|
||||
assertTrue(shouldSkipReWatch(playing = true, positionMs = 42_000), "очки играют и позиция >0 — повторный тап пропускаем")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldNotSkipReWatchWhenNotPlaying() {
|
||||
assertFalse(shouldSkipReWatch(playing = false, positionMs = 42_000), "очки не играют — сбрасываем плеер и перезапускаем watch")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldNotSkipReWatchWhenPositionZero() {
|
||||
assertFalse(shouldSkipReWatch(playing = true, positionMs = 0), "позиция 0 — очки перезапустились/на паузе, старый плеер мёртв")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun bytesToSizeKilobytes() {
|
||||
assertEquals("512 КБ", bytesToSize(512 * 1024L))
|
||||
|
||||
Reference in New Issue
Block a user