Files
open-in-mpv/options_test.go

123 lines
2.6 KiB
Go

package open_in_mpv
import (
"net/url"
"strings"
"testing"
)
var fakePlayer = Player{
Name: "FakePlayer",
Executable: "fakeplayer",
Fullscreen: "",
Pip: "",
Enqueue: "",
NewWindow: "",
NeedsIpc: true,
SupportedSchemes: []string{"https"},
FlagOverrides: map[string]string{},
}
func testUrl(query ...string) string {
elems := []string{
`mpv:///open?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ`,
}
return strings.Join(append(elems, query...), "&")
}
func Test_GenerateCommand(t *testing.T) {
o := NewOptions()
o.Url, _ = url.Parse("example.com")
o.Flags = "--vo=gpu"
o.Pip = true
args := o.GenerateCommand()
t.Logf("%s %v", o.Player, args)
}
func Test_GenerateIPC(t *testing.T) {
o := NewOptions()
_ = o.Parse(testUrl("enqueue=1", "pip=1"))
ipc, _ := o.GenerateIPC()
t.Log(string(ipc))
}
func Test_overrideFlags_single(t *testing.T) {
fakePlayer.FlagOverrides["--foo"] = "--bar=%s"
defaultConfig.Players["fakeplayer"] = fakePlayer
o := NewOptions()
err := o.Parse(testUrl("player=fakeplayer", "flags=--foo"))
if err != nil {
t.Error(err)
}
result := o.overrideFlags()
if result != "--bar=foo" {
t.Fail()
t.Log(result)
t.Logf("%#v\n", o)
}
}
func Test_overrideFlags_star(t *testing.T) {
fakePlayer.FlagOverrides["*"] = "--bar=%s"
defaultConfig.Players["fakeplayer"] = fakePlayer
o := NewOptions()
err := o.Parse(testUrl("player=fakeplayer", "flags=--foo%20--baz"))
if err != nil {
t.Error(err)
}
result := o.overrideFlags()
if result != "--bar=foo --bar=baz" {
t.Fail()
t.Log(result)
t.Logf("%#v\n", o)
}
}
func Test_Parse(t *testing.T) {
fakePlayer.FlagOverrides["*"] = "--bar=%s"
defaultConfig.Players["fakeplayer"] = fakePlayer
o := NewOptions()
err := o.Parse(testUrl("player=fakeplayer", "enqueue=1", "pip=1"))
if err != nil {
t.Fatal(err)
}
fakePlayer.SupportedSchemes = []string{}
defaultConfig.Players["fakeplayer"] = fakePlayer
err = o.Parse(testUrl("player=fakeplayer", "enqueue=1", "pip=1"))
if err == nil {
t.Logf("%#v", defaultConfig.Players["fakeplayer"])
t.Fatal("Err should not be nil")
}
args := o.GenerateCommand()
t.Logf("%s %v", o.Player, args)
}
func Test_sliceContains(t *testing.T) {
schemas := []string{
"http",
"https",
"ftp",
"ftps",
}
if !stringSliceContains("https", schemas) {
t.Logf("should return true if element (https) is in slice (%v)", schemas)
t.Fail()
}
if stringSliceContains("av", schemas) {
t.Logf("should return false if element (av) is not in slice (%v)", schemas)
t.Fail()
}
}