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]) }