Clementine-audio-player-Mac.../tests/m3uparser_test.cpp

54 lines
1.4 KiB
C++

#include "gtest/gtest.h"
#include "test_utils.h"
#include "m3uparser.h"
class M3UParserTest : public ::testing::Test {
protected:
M3UParserTest()
: parser_(NULL) {
}
M3UParser parser_;
};
TEST_F(M3UParserTest, ParsesMetadata) {
QString line("#EXTINF:123,Foo artist - Foo track");
M3UParser::Metadata metadata;
ASSERT_TRUE(parser_.ParseMetadata(line, &metadata));
EXPECT_EQ("Foo artist", metadata.artist.toStdString());
EXPECT_EQ("Foo track", metadata.title.toStdString());
EXPECT_EQ(123, metadata.length);
}
TEST_F(M3UParserTest, ParsesTrackLocation) {
QString line("/foo/bar.mp3");
QUrl url;
ASSERT_TRUE(parser_.ParseTrackLocation(line, &url));
EXPECT_EQ(QUrl("file:///foo/bar.mp3"), url);
}
TEST_F(M3UParserTest, ParsesTrackLocationRelative) {
M3UParser parser(NULL, QDir("/tmp"));
QString line("foo/bar.mp3");
QUrl url;
ASSERT_TRUE(parser.ParseTrackLocation(line, &url));
EXPECT_EQ(QUrl("file:///tmp/foo/bar.mp3"), url);
}
TEST_F(M3UParserTest, ParsesTrackLocationHttp) {
QString line("http://example.com/foo/bar.mp3");
QUrl url;
ASSERT_TRUE(parser_.ParseTrackLocation(line, &url));
EXPECT_EQ(QUrl("http://example.com/foo/bar.mp3"), url);
}
#ifdef Q_OS_WIN32
TEST_F(M3UParserTest, ParsesTrackLocationAbsoluteWindows) {
QString line("c:/foo/bar.mp3");
QUrl url;
ASSERT_TRUE(parser_.ParseTrackLocation(line, &url));
EXPECT_EQ(QUrl("file:///c:/foo/bar.mp3"), url);
}
#endif // Q_OS_WIN32