Media: components 341-360
This commit is contained in:
111 files changed
+6831
-1
No files matched your search
@@ -0,0 +1,89 @@
|
||||
package mujica
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
)
|
||||
|
||||
type mediaCalls struct {
|
||||
play, pause int
|
||||
seeks []time.Duration
|
||||
}
|
||||
|
||||
func (m *mediaCalls) opts() AudioPlayerOptions {
|
||||
return AudioPlayerOptions{OnPlay: func() { m.play++ }, OnPause: func() { m.pause++ }, OnSeek: func(d time.Duration) { m.seeks = append(m.seeks, d) }}
|
||||
}
|
||||
|
||||
func audioTester(st *AudioState, m *mediaCalls, disabled bool) *ui.Tester {
|
||||
return ui.NewTester(func(c *ui.Context) {
|
||||
Use(c, Settings{})
|
||||
o := m.opts()
|
||||
o.Disabled = disabled
|
||||
ui.Column(c).Padding(20).Children(func() { AudioPlayer(c, *st, o) })
|
||||
}, 600, 200)
|
||||
}
|
||||
|
||||
func TestAudioPlayerPlayPause(t *testing.T) {
|
||||
st := AudioState{Title: "Ave Mujica", Position: 30 * time.Second, Duration: 3 * time.Minute}
|
||||
var m mediaCalls
|
||||
tt := audioTester(&st, &m, false)
|
||||
if err := tt.Click("Play"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
st.Playing = true
|
||||
tt.Frame()
|
||||
if err := tt.Click("Pause"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if m.play != 1 || m.pause != 1 {
|
||||
t.Fatalf("play %d pause %d", m.play, m.pause)
|
||||
}
|
||||
if !tt.HasText("0:30 / 3:00") {
|
||||
t.Fatalf("texts %v", tt.Texts())
|
||||
}
|
||||
}
|
||||
|
||||
func TestAudioPlayerKeyboard(t *testing.T) {
|
||||
st := AudioState{Title: "Ave Mujica", Position: 30 * time.Second, Duration: 3 * time.Minute}
|
||||
var m mediaCalls
|
||||
tt := audioTester(&st, &m, false)
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyRight)
|
||||
if len(m.seeks) != 1 || m.seeks[0] != 35*time.Second {
|
||||
t.Fatalf("seeks %v", m.seeks)
|
||||
}
|
||||
tt.Key(0, ui.KeySpace)
|
||||
if m.play != 1 {
|
||||
t.Fatalf("Space on the timeline: play %d", m.play)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAudioPlayerDisabled(t *testing.T) {
|
||||
st := AudioState{Title: "Ave Mujica", Duration: time.Minute}
|
||||
var m mediaCalls
|
||||
tt := audioTester(&st, &m, true)
|
||||
_ = tt.Click("Play")
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeySpace)
|
||||
tt.Key(0, ui.KeyRight)
|
||||
if m.play != 0 || len(m.seeks) != 0 {
|
||||
t.Fatalf("disabled player reported %+v", m)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAudioPlayerNeedsCallbacks(t *testing.T) {
|
||||
mediaPanics(t, "no callbacks", func(c *ui.Context) { AudioPlayer(c, AudioState{}, AudioPlayerOptions{}) })
|
||||
}
|
||||
|
||||
func TestAudioPlayerSnapshot(t *testing.T) {
|
||||
var m mediaCalls
|
||||
snapshot(t, "audio_player", 560, 200, func(c *ui.Context) {
|
||||
ui.Column(c).Padding(20).Gap(12).Children(func() {
|
||||
AudioPlayer(c, AudioState{Title: "Ave Mujica — Overture", Position: 72 * time.Second, Duration: 4 * time.Minute, Playing: true}, m.opts())
|
||||
AudioPlayer(c, AudioState{Title: "Imprisoned XII", Duration: 5 * time.Minute}, m.opts())
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user