source-aware playback statuses.

This commit is contained in:
Dmitry Sergeev
2026-09-01 21:22:30 +03:00
parent d3ea99233d
commit cd0298b136
10 changed files with 151 additions and 41 deletions
+74 -1
View File
@@ -5,7 +5,14 @@ import "testing"
func TestIsSessionPlaying(t *testing.T) {
const generation = 4
playing := func(unit Unit) Status {
return Status{Unit: unit, State: StatePlaying, Generation: generation}
status := Status{Unit: unit, State: StatePlaying, Generation: generation}
switch unit {
case UnitVideo:
status.Feed = FeedConfig{UUID: "video"}
case UnitAudio:
status.Feed = FeedConfig{UUID: "audio"}
}
return status
}
tests := []struct {
name string
@@ -171,6 +178,72 @@ func TestIsSessionPlaying(t *testing.T) {
HasSync: true,
},
},
{
name: "video status has wrong UUID",
session: SessionSnapshot{
Generation: generation,
Plan: SessionPlan{
Topology: TopologyIndependent,
Video: FeedConfig{Domain: "domain", UUID: "video", Active: true},
},
},
statuses: PlaybackStatusSnapshot{
Generation: generation,
Video: Status{
Unit: UnitVideo,
State: StatePlaying,
Generation: generation,
Feed: FeedConfig{Domain: "domain", UUID: "other"},
},
HasVideo: true,
},
},
{
name: "audio status has wrong domain",
session: SessionSnapshot{
Generation: generation,
Plan: SessionPlan{
Topology: TopologyIndependent,
Audio: FeedConfig{Domain: "audio-domain", UUID: "audio", Active: true},
},
},
statuses: PlaybackStatusSnapshot{
Generation: generation,
Audio: Status{
Unit: UnitAudio,
State: StatePlaying,
Generation: generation,
Feed: FeedConfig{Domain: "other-domain", UUID: "audio"},
},
HasAudio: true,
},
},
{
name: "sync status has wrong audio source",
session: SessionSnapshot{
Generation: generation,
Plan: SessionPlan{
Topology: TopologySynchronized,
Sync: SyncPairConfig{
Video: FeedConfig{Domain: "domain", UUID: "video"},
Audio: FeedConfig{Domain: "domain", UUID: "audio"},
},
},
},
statuses: PlaybackStatusSnapshot{
Generation: generation,
Sync: Status{
Unit: UnitSync,
State: StatePlaying,
Generation: generation,
Pair: SyncPairConfig{
Video: FeedConfig{Domain: "domain", UUID: "video"},
Audio: FeedConfig{Domain: "domain", UUID: "other-audio"},
},
},
HasSync: true,
},
},
{
name: "idle",
session: SessionSnapshot{