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++

// 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);
}
}