Files
iptvc/app/inifile/inifile_test.go
T
2026-07-19 19:14:55 +08:00

92 lines
1.9 KiB
Go

package inifile
import (
"os"
"path/filepath"
"testing"
)
func TestInit_Success(t *testing.T) {
tmp := t.TempDir()
path := filepath.Join(tmp, "playlists.ini")
data := `[RU]
pls = http://example.com/ru.m3u
name = Russian Playlist
desc = Russian channels
src = public
[EN]
pls = http://example.com/en.m3u
name = English Playlist
`
if err := os.WriteFile(path, []byte(data), 0644); err != nil {
t.Fatal(err)
}
ini, err := Init(path)
if err != nil {
t.Fatal(err)
}
if len(ini.Lists) != 2 {
t.Fatalf("expected 2 playlists, got %d", len(ini.Lists))
}
ru, ok := ini.Lists["RU"]
if !ok {
t.Fatal("expected RU playlist")
}
if ru.Name != "Russian Playlist" {
t.Errorf("expected 'Russian Playlist', got '%s'", ru.Name)
}
if ru.Description != "Russian channels" {
t.Errorf("expected 'Russian channels', got '%s'", ru.Description)
}
if ru.Url != "http://example.com/ru.m3u" {
t.Errorf("expected URL, got '%s'", ru.Url)
}
if ru.Source != "public" {
t.Errorf("expected 'public', got '%s'", ru.Source)
}
}
func TestInit_NotFound(t *testing.T) {
_, err := Init("/nonexistent/playlists.ini")
if err == nil {
t.Error("expected error for non-existent file")
}
}
func TestInit_EmptyPls(t *testing.T) {
tmp := t.TempDir()
path := filepath.Join(tmp, "playlists.ini")
data := `[BAD]
name = Bad Playlist
`
os.WriteFile(path, []byte(data), 0644)
ini, err := Init(path)
if err != nil {
t.Fatal(err)
}
if len(ini.Lists) != 0 {
t.Errorf("expected 0 playlists (empty pls), got %d", len(ini.Lists))
}
}
func TestInit_DefaultName(t *testing.T) {
tmp := t.TempDir()
path := filepath.Join(tmp, "playlists.ini")
data := `[CODE1]
pls = http://example.com/list.m3u
`
os.WriteFile(path, []byte(data), 0644)
ini, err := Init(path)
if err != nil {
t.Fatal(err)
}
pls, ok := ini.Lists["CODE1"]
if !ok {
t.Fatal("expected CODE1 playlist")
}
if pls.Name != "Playlist #CODE1" {
t.Errorf("expected 'Playlist #CODE1', got '%s'", pls.Name)
}
}