82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
package luaplugin
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestMessageAPIDeliversTextAndDuration(t *testing.T) {
|
|
m := newTestManager()
|
|
var gotText string
|
|
var gotDur time.Duration
|
|
m.SetUIProvider(UIProvider{
|
|
ShowMessage: func(text string, duration time.Duration) {
|
|
gotText = text
|
|
gotDur = duration
|
|
},
|
|
})
|
|
|
|
loadTestPlugin(t, m, "msg-test", `
|
|
plugin.register({name = "msg-test", type = "hook"})
|
|
cliamp.message("Scrobble Sent", 2)
|
|
`)
|
|
|
|
if gotText != "Scrobble Sent" {
|
|
t.Fatalf("text = %q, want %q", gotText, "Scrobble Sent")
|
|
}
|
|
if gotDur != 2*time.Second {
|
|
t.Fatalf("duration = %v, want 2s", gotDur)
|
|
}
|
|
}
|
|
|
|
func TestMessageAPIDefaultsDurationToZero(t *testing.T) {
|
|
m := newTestManager()
|
|
var gotDur time.Duration
|
|
seen := false
|
|
m.SetUIProvider(UIProvider{
|
|
ShowMessage: func(_ string, duration time.Duration) {
|
|
gotDur = duration
|
|
seen = true
|
|
},
|
|
})
|
|
|
|
loadTestPlugin(t, m, "msg-default", `
|
|
plugin.register({name = "msg-default", type = "hook"})
|
|
cliamp.message("hello")
|
|
`)
|
|
|
|
if !seen {
|
|
t.Fatal("ShowMessage was not called")
|
|
}
|
|
if gotDur != 0 {
|
|
t.Fatalf("duration = %v, want 0 (UI decides default)", gotDur)
|
|
}
|
|
}
|
|
|
|
func TestMessageAPIClampsMaxDuration(t *testing.T) {
|
|
m := newTestManager()
|
|
var gotDur time.Duration
|
|
m.SetUIProvider(UIProvider{
|
|
ShowMessage: func(_ string, duration time.Duration) { gotDur = duration },
|
|
})
|
|
|
|
loadTestPlugin(t, m, "msg-clamp", `
|
|
plugin.register({name = "msg-clamp", type = "hook"})
|
|
cliamp.message("long", 9999)
|
|
`)
|
|
|
|
if gotDur != messageMaxDuration {
|
|
t.Fatalf("duration = %v, want %v (clamped)", gotDur, messageMaxDuration)
|
|
}
|
|
}
|
|
|
|
func TestMessageAPIWithoutProviderIsNoop(t *testing.T) {
|
|
m := newTestManager()
|
|
// No SetUIProvider call — ShowMessage is nil.
|
|
loadTestPlugin(t, m, "msg-noop", `
|
|
plugin.register({name = "msg-noop", type = "hook"})
|
|
cliamp.message("nobody listening")
|
|
`)
|
|
// Success = no panic / no error from loadPlugin above.
|
|
}
|