#include #include #include #include #include "library/parser.h" class DummyParser : public Parser { public: QList parse(QString) override { return QList(); } QString playlistEntryToFilePath( const QString& playlistEntry, const QString& basePath = QString()) { return playlistEntryToTrackFile(playlistEntry, basePath).asFileInfo().filePath(); } }; class PlaylistTest : public testing::Test {}; TEST_F(PlaylistTest, Normalize) { DummyParser parser; EXPECT_EQ(QString("/foo/bar.mp3"), parser.playlistEntryToFilePath("file:///foo/bar.mp3")); EXPECT_EQ(QString("foo/bar.mp3"), parser.playlistEntryToFilePath("file:foo/bar.mp3")); #ifdef Q_OS_WIN EXPECT_EQ(QString("c:/foo/bar.mp3"), parser.playlistEntryToFilePath("file:///c:/foo/bar.mp3")); #else EXPECT_EQ(QString("/c:/foo/bar.mp3"), parser.playlistEntryToFilePath("file:///c:/foo/bar.mp3")); #endif EXPECT_EQ(QString("/foo /bar.mp3"), parser.playlistEntryToFilePath("file:///foo%20/bar.mp3")); EXPECT_EQ(QString("c:/foo/bar.mp3"), parser.playlistEntryToFilePath("c:/foo/bar.mp3")); EXPECT_EQ(QString("c:/foo/bar.mp3"), parser.playlistEntryToFilePath("c:\\foo\\bar.mp3")); } TEST_F(PlaylistTest, Relative) { DummyParser parser; EXPECT_EQ(QString("../foo/bar.mp3"), parser.playlistEntryToFilePath("../foo/bar.mp3", "")); EXPECT_EQ(QString("base/folder/../foo/bar.mp3"), parser.playlistEntryToFilePath("../foo/bar.mp3", "base/folder")); EXPECT_EQ(QString("base/folder/../../bar.mp3"), parser.playlistEntryToFilePath("../../bar.mp3", "base/folder")); }