123 lines
2.6 KiB
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()
|
|
}
|
|
}
|