You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.8 KiB
C++
89 lines
1.8 KiB
C++
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
// Copyright The Music Player Daemon Project
|
|
|
|
#include "PlaylistUtil.hxx"
|
|
#include "playlist/PlaylistRegistry.hxx"
|
|
#include "playlist/SongEnumerator.hxx"
|
|
#include "config/Data.hxx"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
using std::string_view_literals::operator""sv;
|
|
|
|
// from https://en.wikipedia.org/wiki/PLS_(file_format)
|
|
static constexpr auto pls1 = R"(
|
|
[playlist]
|
|
File1=https://e20.yesstreaming.net:8279/
|
|
Title1=Here enter name of the station
|
|
NumberOfEntries=1
|
|
)"sv;
|
|
|
|
static constexpr auto expect1 = R"(
|
|
song_begin: https://e20.yesstreaming.net:8279/
|
|
Title: Here enter name of the station
|
|
song_end
|
|
|
|
)"sv;
|
|
|
|
// from https://en.wikipedia.org/wiki/PLS_(file_format)
|
|
static constexpr auto pls2 = R"pls(
|
|
[playlist]
|
|
|
|
File1=https://e20.yesstreaming.net:8279/
|
|
Length1=-1
|
|
|
|
File2=example2.mp3
|
|
Title2=Just some local audio that is 2mins long
|
|
Length2=120
|
|
|
|
File3=F:\Music\whatever.m4a
|
|
Title3=absolute path on Windows
|
|
|
|
File4=%UserProfile%\Music\short.ogg
|
|
Title4=example for an Environment variable
|
|
Length4=5
|
|
|
|
NumberOfEntries=4
|
|
Version=2
|
|
)pls"sv;
|
|
|
|
static constexpr auto expect2 = R"(
|
|
song_begin: https://e20.yesstreaming.net:8279/
|
|
song_end
|
|
|
|
song_begin: example2.mp3
|
|
Time: 120
|
|
Title: Just some local audio that is 2mins long
|
|
song_end
|
|
|
|
song_begin: F:\Music\whatever.m4a
|
|
Title: absolute path on Windows
|
|
song_end
|
|
|
|
song_begin: %UserProfile%\Music\short.ogg
|
|
Time: 5
|
|
Title: example for an Environment variable
|
|
song_end
|
|
|
|
)"sv;
|
|
|
|
TEST(PlaylistPlugins, Pls)
|
|
{
|
|
const ConfigData config;
|
|
ScopePlaylistPluginsInit playlist_plugins_init{config};
|
|
|
|
const char *uri = "dummy.pls";
|
|
|
|
{
|
|
const auto p = ParsePlaylist(uri, pls1);
|
|
ASSERT_TRUE(p);
|
|
EXPECT_EQ(ToString(*p), expect1);
|
|
}
|
|
|
|
{
|
|
const auto p = ParsePlaylist(uri, pls2);
|
|
ASSERT_TRUE(p);
|
|
EXPECT_EQ(ToString(*p), expect2);
|
|
}
|
|
}
|