Files
qrun/cmd/qrunproxy/timeline_test.go

76 lines
1.8 KiB
Go

package main
import (
"testing"
"time"
)
func TestBuildTimelineFromMockShow(t *testing.T) {
t0 := time.Now()
show := GenerateMockShow(5, 20, 4, 5)
t.Logf("GenerateMockShow: %v (%d blocks, %d triggers)", time.Since(t0), len(show.Blocks), len(show.Triggers))
t1 := time.Now()
if err := show.Validate(); err != nil {
t.Fatalf("generated show failed validation: %v", err)
}
t.Logf("Validate: %v", time.Since(t1))
t2 := time.Now()
tl, err := BuildTimeline(show)
t.Logf("BuildTimeline: %v", time.Since(t2))
if err != nil {
t.Fatalf("BuildTimeline failed: %v", err)
}
t.Logf("tracks=%d blocks=%d", len(tl.Tracks), len(tl.Blocks))
}
func BenchmarkBuildTimeline(b *testing.B) {
show := GenerateMockShow(5, 20, 4, 5)
if err := show.Validate(); err != nil {
b.Fatal(err)
}
b.ResetTimer()
for range b.N {
BuildTimeline(show)
}
}
func TestTimelineOrderDependency(t *testing.T) {
show := &Show{
Tracks: []*Track{
{ID: "T1", Name: "Track 1"},
{ID: "T2", Name: "Track 2"},
},
Blocks: []*Block{
{ID: "B", Type: "media", Track: "T1", Name: "Block B"},
{ID: "A", Type: "media", Track: "T1", Name: "Block A"},
{ID: "C", Type: "media", Track: "T2", Name: "Block C"},
{ID: "C1", Type: "cue", Name: "Cue 1"},
},
Triggers: []*Trigger{
{
Source: TriggerSource{Block: "C1", Signal: "GO"},
Targets: []TriggerTarget{{Block: "A", Hook: "START"}},
},
{
Source: TriggerSource{Block: "A", Signal: "END"},
Targets: []TriggerTarget{{Block: "C", Hook: "START"}},
},
{
Source: TriggerSource{Block: "C", Signal: "END"},
Targets: []TriggerTarget{{Block: "B", Hook: "START"}},
},
},
}
if err := show.Validate(); err != nil {
t.Fatalf("Validate failed: %v", err)
}
_, err := BuildTimeline(show)
if err != nil {
t.Fatalf("BuildTimeline failed: %v", err)
}
}