49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package playlist_test
|
|
|
|
import (
|
|
"segmento/internal/playlist"
|
|
"segmento/internal/segment"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMediaPlaylistImplements(t *testing.T) {
|
|
require.Implements(t, (*playlist.Playlist)(nil), playlist.NewMediaPlaylist())
|
|
}
|
|
|
|
func TestMediaPlaylist(t *testing.T) {
|
|
playlist := playlist.NewMediaPlaylist()
|
|
|
|
for i := 0; i < 8; i++ {
|
|
s := segment.NewSegment(3*time.Second, 0)
|
|
s.IncrementDuration(3 * time.Second)
|
|
playlist.AddSegment(s)
|
|
}
|
|
require.Equal(t, 21*time.Second, playlist.Duration())
|
|
}
|
|
|
|
func TestMediaPlaylistRender(t *testing.T) {
|
|
playlist := playlist.NewMediaPlaylist()
|
|
|
|
s := segment.NewSegment(3*time.Second, 0)
|
|
s.IncrementDuration(3 * time.Second)
|
|
playlist.AddSegment(s)
|
|
|
|
s = segment.NewSegment(3*time.Second, 0)
|
|
s.IncrementDuration(2700 * time.Millisecond)
|
|
playlist.AddSegment(s)
|
|
|
|
lines := strings.Split(playlist.Render(), "\n")
|
|
|
|
require.Equal(t, "#EXTM3U", lines[0])
|
|
require.Equal(t, "#EXT-X-VERSION:3", lines[1])
|
|
require.Equal(t, "#EXT-X-TARGETDURATION:3", lines[2])
|
|
require.Equal(t, "#EXTINF:3.00000", lines[3])
|
|
require.Equal(t, "http://www.example.com/x.mp3", lines[4])
|
|
require.Equal(t, "#EXTINF:2.70000", lines[5])
|
|
require.Equal(t, "http://www.example.com/x.mp3", lines[6])
|
|
}
|