64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package playlist
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestParseAttributes(t *testing.T) {
|
|
line := `#EXTINF:-1 tvg-id="test" group-title="News",Channel Name`
|
|
attrs := parseAttributes(line)
|
|
if attrs["tvg-id"] != "test" {
|
|
t.Errorf("tvg-id = %q, want %q", attrs["tvg-id"], "test")
|
|
}
|
|
if attrs["group-title"] != "News" {
|
|
t.Errorf("group-title = %q, want %q", attrs["group-title"], "News")
|
|
}
|
|
}
|
|
|
|
func TestParseTitle(t *testing.T) {
|
|
tests := []struct {
|
|
input string
|
|
expected string
|
|
}{
|
|
{`#EXTINF:-1,Channel Name`, "Channel Name"},
|
|
{`#EXTINF:-1 tvg-id="x",Another Channel`, "Another Channel"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.expected, func(t *testing.T) {
|
|
got := parseTitle(tt.input)
|
|
if got != tt.expected {
|
|
t.Errorf("parseTitle(%q) = %q, want %q", tt.input, got, tt.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPlaylistParse(t *testing.T) {
|
|
content := `#EXTM3U
|
|
#EXTINF:-1 tvg-id="1" group-title="News",First Channel
|
|
http://example.com/1
|
|
#EXTINF:-1 tvg-id="2",Second Channel
|
|
http://example.com/2
|
|
`
|
|
pls := Playlist{Content: content}
|
|
result := pls.Parse()
|
|
|
|
if len(result.Channels) != 2 {
|
|
t.Errorf("channels count = %d, want 2", len(result.Channels))
|
|
}
|
|
|
|
if len(result.Groups) != 1 {
|
|
t.Errorf("groups count = %d, want 1", len(result.Groups))
|
|
}
|
|
|
|
for _, ch := range result.Channels {
|
|
if ch.URL == "" {
|
|
t.Error("channel URL is empty")
|
|
}
|
|
if ch.Title == "" {
|
|
t.Error("channel Title is empty")
|
|
}
|
|
}
|
|
}
|