playlist timer pause/resume without affecting active feeds

This commit is contained in:
Dmitry Sergeev
2026-09-01 22:32:19 +03:00
parent b0e7bc4cc3
commit ca25bf88a7
11 changed files with 371 additions and 28 deletions
+15 -1
View File
@@ -3,6 +3,7 @@ package main
import (
"context"
"errors"
"math"
"testing"
"time"
@@ -127,6 +128,8 @@ func TestPlayerPlaylistNavigationHelpers(t *testing.T) {
{send: func() bool { return runtime.Select(4) }, want: playback.PlaylistCommand{Kind: playback.PlaylistSelect, Index: 4}},
{send: runtime.Next, want: playback.PlaylistCommand{Kind: playback.PlaylistNext}},
{send: runtime.Previous, want: playback.PlaylistCommand{Kind: playback.PlaylistPrevious}},
{send: runtime.Pause, want: playback.PlaylistCommand{Kind: playback.PlaylistPause}},
{send: runtime.Resume, want: playback.PlaylistCommand{Kind: playback.PlaylistResume}},
}
for _, test := range tests {
if !test.send() {
@@ -344,6 +347,16 @@ func TestPlaylistTimingProgress(t *testing.T) {
timing: playback.PlaylistTimingState{Duration: 10 * time.Second, Expired: true},
wantFraction: 1,
},
{
name: "paused",
timing: playback.PlaylistTimingState{
Duration: 10 * time.Second,
Paused: true,
Remaining: 6 * time.Second,
},
wantFraction: 0.4,
wantRemaining: 6 * time.Second,
},
{
name: "deadline passed",
timing: playback.PlaylistTimingState{
@@ -358,7 +371,8 @@ func TestPlaylistTimingProgress(t *testing.T) {
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
fraction, remaining := playlistTimingProgress(test.timing, now)
if fraction != test.wantFraction || remaining != test.wantRemaining {
if math.Abs(float64(fraction-test.wantFraction)) > 0.000001 ||
remaining != test.wantRemaining {
t.Fatalf(
"playlistTimingProgress() = %v, %v; want %v, %v",
fraction,