display video worker status

This commit is contained in:
Dmitry Sergeev
2026-08-27 23:33:04 +03:00
parent 9df21828e9
commit 743e1680c1
4 changed files with 107 additions and 6 deletions
+36 -1
View File
@@ -1,6 +1,9 @@
package playback
import "time"
import (
"fmt"
"time"
)
type Unit uint8
@@ -31,3 +34,35 @@ type Status struct {
}
type StatusObserver func(Status)
func (u Unit) String() string {
switch u {
case UnitVideo:
return "video"
case UnitAudio:
return "audio"
case UnitSync:
return "sync"
default:
return fmt.Sprintf("Unit(%d)", uint8(u))
}
}
func (s State) String() string {
switch s {
case StateIdle:
return "idle"
case StateConnecting:
return "connecting"
case StatePlaying:
return "playing"
case StateReconnecting:
return "reconnecting"
case StateFailed:
return "failed"
case StateStopping:
return "stopping"
default:
return fmt.Sprintf("State(%d)", uint8(s))
}
}
+39
View File
@@ -38,3 +38,42 @@ func TestStatusPreservesValues(t *testing.T) {
t.Errorf("RetryIn = %s, want %s", status.RetryIn, time.Second)
}
}
func TestUnitString(t *testing.T) {
tests := []struct {
unit Unit
want string
}{
{unit: UnitVideo, want: "video"},
{unit: UnitAudio, want: "audio"},
{unit: UnitSync, want: "sync"},
{unit: Unit(255), want: "Unit(255)"},
}
for _, tt := range tests {
if got := tt.unit.String(); got != tt.want {
t.Errorf("Unit(%d).String() = %q, want %q", tt.unit, got, tt.want)
}
}
}
func TestStateString(t *testing.T) {
tests := []struct {
state State
want string
}{
{state: StateIdle, want: "idle"},
{state: StateConnecting, want: "connecting"},
{state: StatePlaying, want: "playing"},
{state: StateReconnecting, want: "reconnecting"},
{state: StateFailed, want: "failed"},
{state: StateStopping, want: "stopping"},
{state: State(255), want: "State(255)"},
}
for _, tt := range tests {
if got := tt.state.String(); got != tt.want {
t.Errorf("State(%d).String() = %q, want %q", tt.state, got, tt.want)
}
}
}