From 3a1853a681faed97a375d68352c62e5bc194747a Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 13 Feb 2011 18:35:26 +0000 Subject: [PATCH] Use nanoseconds in playlist parsers, and fix the tests --- src/playlistparsers/cueparser.cpp | 2 +- src/playlistparsers/m3uparser.cpp | 4 +-- src/playlistparsers/m3uparser.h | 2 +- src/playlistparsers/plsparser.cpp | 5 +++- src/playlistparsers/xspfparser.cpp | 10 +++---- tests/asxparser_test.cpp | 2 +- tests/cueparser_test.cpp | 48 +++++++++++++++--------------- tests/m3uparser_test.cpp | 14 ++++----- tests/mock_librarybackend.h | 2 +- tests/organiseformat_test.cpp | 2 +- tests/plsparser_test.cpp | 12 ++++---- tests/songloader_test.cpp | 2 +- tests/xspfparser_test.cpp | 8 ++--- 13 files changed, 58 insertions(+), 55 deletions(-) diff --git a/src/playlistparsers/cueparser.cpp b/src/playlistparsers/cueparser.cpp index 64a4558ec..ca5d72db7 100644 --- a/src/playlistparsers/cueparser.cpp +++ b/src/playlistparsers/cueparser.cpp @@ -317,7 +317,7 @@ qint64 CueParser::IndexToMarker(const QString& index) const { QStringList splitted = index_regexp.capturedTexts().mid(1, -1); // TODO: use frames when #1166 is fixed - return splitted.at(0).toLongLong() * 60 + splitted.at(1).toLongLong(); + return (splitted.at(0).toLongLong() * 60 + splitted.at(1).toLongLong()) * 1e9; } void CueParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { diff --git a/src/playlistparsers/m3uparser.cpp b/src/playlistparsers/m3uparser.cpp index 37054eb57..53cb2c39b 100644 --- a/src/playlistparsers/m3uparser.cpp +++ b/src/playlistparsers/m3uparser.cpp @@ -100,7 +100,7 @@ bool M3UParser::ParseMetadata(const QString& line, M3UParser::Metadata* metadata if (!ok) { return false; } - metadata->length = length; + metadata->length = length * 1e9; QString track_info = info.section(',', 1); QStringList list = track_info.split('-'); @@ -120,7 +120,7 @@ void M3UParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) continue; } QString meta = QString("#EXTINF:%1,%2 - %3\n") - .arg(song.length_nanosec()) + .arg(song.length_nanosec() / 1e9) .arg(song.artist()).arg(song.title()); device->write(meta.toUtf8()); device->write(MakeRelativeTo(song.filename(), dir).toUtf8()); diff --git a/src/playlistparsers/m3uparser.h b/src/playlistparsers/m3uparser.h index 0fb47b732..28008007f 100644 --- a/src/playlistparsers/m3uparser.h +++ b/src/playlistparsers/m3uparser.h @@ -50,7 +50,7 @@ class M3UParser : public ParserBase { Metadata() : length(-1) {} QString artist; QString title; - int length; + qint64 length; }; bool ParseMetadata(const QString& line, Metadata* metadata) const; diff --git a/src/playlistparsers/plsparser.cpp b/src/playlistparsers/plsparser.cpp index bdadea996..9a0079fe9 100644 --- a/src/playlistparsers/plsparser.cpp +++ b/src/playlistparsers/plsparser.cpp @@ -52,7 +52,10 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const } else if (key.startsWith("title")) { songs[n].set_title(value); } else if (key.startsWith("length")) { - songs[n].set_length_nanosec(value.toLongLong() * 1e9); + qint64 seconds = value.toLongLong(); + if (seconds > 0) { + songs[n].set_length_nanosec(seconds * 1e9); + } } } diff --git a/src/playlistparsers/xspfparser.cpp b/src/playlistparsers/xspfparser.cpp index 3b79d4b17..fdc7c56a9 100644 --- a/src/playlistparsers/xspfparser.cpp +++ b/src/playlistparsers/xspfparser.cpp @@ -50,7 +50,7 @@ SongList XSPFParser::Load(QIODevice *device, const QString& playlist_path, const Song XSPFParser::ParseTrack(QXmlStreamReader* reader) const { Song song; QString title, artist, album; - int length = -1; + qint64 nanosec = -1; while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { @@ -84,9 +84,9 @@ Song XSPFParser::ParseTrack(QXmlStreamReader* reader) const { } else if (name == "duration") { // in milliseconds. const QString& duration = reader->readElementText(); bool ok = false; - length = duration.toInt(&ok) / 1000; + nanosec = duration.toInt(&ok) * 1e6; if (!ok) { - length = -1; + nanosec = -1; } } else if (name == "image") { // TODO: Fetch album covers. @@ -97,7 +97,7 @@ Song XSPFParser::ParseTrack(QXmlStreamReader* reader) const { } case QXmlStreamReader::EndElement: { if (reader->name() == "track") { - song.Init(title, artist, album, length); + song.Init(title, artist, album, nanosec); return song; } } @@ -106,7 +106,7 @@ Song XSPFParser::ParseTrack(QXmlStreamReader* reader) const { } } // At least make an effort if we never find a . - song.Init(title, artist, album, length); + song.Init(title, artist, album, nanosec); return song; } diff --git a/tests/asxparser_test.cpp b/tests/asxparser_test.cpp index c61cc902c..19590d73d 100644 --- a/tests/asxparser_test.cpp +++ b/tests/asxparser_test.cpp @@ -102,7 +102,7 @@ TEST_F(ASXParserTest, SavesSong) { one.set_filename("http://www.example.com/foo.mp3"); one.set_filetype(Song::Type_Stream); one.set_title("foo"); - one.set_length(123); + one.set_length_nanosec(123 * 1e9); one.set_artist("bar"); SongList songs; songs << one; diff --git a/tests/cueparser_test.cpp b/tests/cueparser_test.cpp index 874e97b75..09830b467 100644 --- a/tests/cueparser_test.cpp +++ b/tests/cueparser_test.cpp @@ -63,7 +63,7 @@ TEST_F(CueParserTest, ParsesASong) { ASSERT_EQ("Zucchero", first_song.artist()); ASSERT_EQ("Zucchero himself", first_song.albumartist()); ASSERT_EQ("", first_song.album()); - ASSERT_EQ(1, first_song.beginning()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); ASSERT_EQ(1, first_song.track()); ASSERT_EQ("CUEPATH", first_song.cue_path()); @@ -87,15 +87,15 @@ TEST_F(CueParserTest, ParsesTwoSongs) { ASSERT_EQ("Chocabeck", first_song.album()); ASSERT_EQ("Zucchero himself", first_song.artist()); ASSERT_EQ("Zucchero himself", first_song.albumartist()); - ASSERT_EQ(1, first_song.beginning()); - ASSERT_EQ(second_song.beginning() - first_song.beginning(), first_song.length()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); + ASSERT_EQ(second_song.beginning_nanosec() - first_song.beginning_nanosec(), first_song.length_nanosec()); ASSERT_EQ(1, first_song.track()); ASSERT_EQ("Somewon Else's Tears", second_song.title()); ASSERT_EQ("Chocabeck", second_song.album()); ASSERT_EQ("Zucchero himself", second_song.artist()); ASSERT_EQ("Zucchero himself", second_song.albumartist()); - ASSERT_EQ(5 * 60 + 3, second_song.beginning()); + ASSERT_EQ((5 * 60 + 3) * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(2, second_song.track()); validate_songs(song_list); @@ -118,17 +118,17 @@ TEST_F(CueParserTest, SkipsBrokenSongs) { ASSERT_EQ("Chocabeck", first_song.album()); ASSERT_EQ("Zucchero himself", first_song.artist()); ASSERT_EQ("Zucchero himself", first_song.albumartist()); - ASSERT_EQ(1, first_song.beginning()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); // includes the broken song too; this entry will span from it's // INDEX (beginning) to the end of the next correct song - ASSERT_EQ(second_song.beginning() - first_song.beginning(), first_song.length()); + ASSERT_EQ(second_song.beginning_nanosec() - first_song.beginning_nanosec(), first_song.length_nanosec()); ASSERT_EQ(1, first_song.track()); ASSERT_EQ("Somewon Else's Tears", second_song.title()); ASSERT_EQ("Chocabeck", second_song.album()); ASSERT_EQ("Zucchero himself", second_song.artist()); ASSERT_EQ("Zucchero himself", second_song.albumartist()); - ASSERT_EQ(5 * 60, second_song.beginning()); + ASSERT_EQ((5 * 60) * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(2, second_song.track()); validate_songs(song_list); @@ -153,8 +153,8 @@ TEST_F(CueParserTest, UsesAllMetadataInformation) { ASSERT_EQ("Zucchero", first_song.artist()); ASSERT_EQ("Zucchero himself", first_song.albumartist()); ASSERT_EQ("Some guy", first_song.composer()); - ASSERT_EQ(1, first_song.beginning()); - ASSERT_EQ(second_song.beginning() - first_song.beginning(), first_song.length()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); + ASSERT_EQ(second_song.beginning_nanosec() - first_song.beginning_nanosec(), first_song.length_nanosec()); ASSERT_EQ(1, first_song.track()); ASSERT_TRUE(second_song.filename().endsWith("a_file.mp3")); @@ -163,7 +163,7 @@ TEST_F(CueParserTest, UsesAllMetadataInformation) { ASSERT_EQ("Zucchero himself", second_song.artist()); ASSERT_EQ("Zucchero himself", second_song.albumartist()); ASSERT_EQ("Some other guy", second_song.composer()); - ASSERT_EQ(2, second_song.beginning()); + ASSERT_EQ(2 * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(2, second_song.track()); validate_songs(song_list); @@ -190,8 +190,8 @@ TEST_F(CueParserTest, AcceptsMultipleFileBasedCues) { ASSERT_EQ("Artist One Album", first_song.album()); ASSERT_EQ("Artist One", first_song.artist()); ASSERT_EQ("Artist One", first_song.albumartist()); - ASSERT_EQ(1, first_song.beginning()); - ASSERT_EQ(second_song.beginning() - first_song.beginning(), first_song.length()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); + ASSERT_EQ(second_song.beginning_nanosec() - first_song.beginning_nanosec(), first_song.length_nanosec()); ASSERT_EQ(-1, first_song.track()); ASSERT_EQ("CUEPATH", first_song.cue_path()); @@ -200,7 +200,7 @@ TEST_F(CueParserTest, AcceptsMultipleFileBasedCues) { ASSERT_EQ("Artist One Album", second_song.album()); ASSERT_EQ("Artist One", second_song.artist()); ASSERT_EQ("Artist One", second_song.albumartist()); - ASSERT_EQ((5 * 60 + 3), second_song.beginning()); + ASSERT_EQ((5 * 60 + 3) * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(-1, second_song.track()); ASSERT_TRUE(third_song.filename().endsWith("files/longer_two_p1.mp3")); @@ -208,8 +208,8 @@ TEST_F(CueParserTest, AcceptsMultipleFileBasedCues) { ASSERT_EQ("Artist Two Album", third_song.album()); ASSERT_EQ("Artist X", third_song.artist()); ASSERT_EQ("Artist Two", third_song.albumartist()); - ASSERT_EQ(0, third_song.beginning()); - ASSERT_EQ(fourth_song.beginning() - third_song.beginning(), third_song.length()); + ASSERT_EQ(0, third_song.beginning_nanosec()); + ASSERT_EQ(fourth_song.beginning_nanosec() - third_song.beginning_nanosec(), third_song.length_nanosec()); ASSERT_EQ(-1, third_song.track()); ASSERT_EQ("CUEPATH", third_song.cue_path()); @@ -218,7 +218,7 @@ TEST_F(CueParserTest, AcceptsMultipleFileBasedCues) { ASSERT_EQ("Artist Two Album", fourth_song.album()); ASSERT_EQ("Artist Two", fourth_song.artist()); ASSERT_EQ("Artist Two", fourth_song.albumartist()); - ASSERT_EQ(4 * 60, fourth_song.beginning()); + ASSERT_EQ((4 * 60) * 1e9, fourth_song.beginning_nanosec()); ASSERT_EQ(-1, fourth_song.track()); ASSERT_TRUE(fifth_song.filename().endsWith("files/longer_two_p2.mp3")); @@ -226,7 +226,7 @@ TEST_F(CueParserTest, AcceptsMultipleFileBasedCues) { ASSERT_EQ("Artist Two Album", fifth_song.album()); ASSERT_EQ("Artist Two", fifth_song.artist()); ASSERT_EQ("Artist Two", fifth_song.albumartist()); - ASSERT_EQ(1, fifth_song.beginning()); + ASSERT_EQ(1 * 1e9, fifth_song.beginning_nanosec()); ASSERT_EQ(-1, fifth_song.track()); ASSERT_EQ("CUEPATH", fifth_song.cue_path()); @@ -253,15 +253,15 @@ TEST_F(CueParserTest, SkipsBrokenSongsInMultipleFileBasedCues) { ASSERT_EQ("Artist One", first_song.artist()); ASSERT_EQ("Artist One Album", first_song.album()); ASSERT_EQ("A1", first_song.title()); - ASSERT_EQ(1, first_song.beginning()); - ASSERT_EQ(second_song.beginning() - first_song.beginning(), first_song.length()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); + ASSERT_EQ(second_song.beginning_nanosec() - first_song.beginning_nanosec(), first_song.length_nanosec()); ASSERT_EQ(-1, first_song.track()); ASSERT_TRUE(second_song.filename().endsWith("file1.mp3")); ASSERT_EQ("Artist One", second_song.artist()); ASSERT_EQ("Artist One Album", second_song.album()); ASSERT_EQ("A3", second_song.title()); - ASSERT_EQ(60, second_song.beginning()); + ASSERT_EQ(60 * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(-1, second_song.track()); // all B* songs are broken @@ -271,7 +271,7 @@ TEST_F(CueParserTest, SkipsBrokenSongsInMultipleFileBasedCues) { ASSERT_EQ("Artist Three", third_song.artist()); ASSERT_EQ("Artist Three Album", third_song.album()); ASSERT_EQ("C1", third_song.title()); - ASSERT_EQ(1, third_song.beginning()); + ASSERT_EQ(1 * 1e9, third_song.beginning_nanosec()); ASSERT_EQ(-1, third_song.track()); // D* - broken song at the beginning @@ -279,7 +279,7 @@ TEST_F(CueParserTest, SkipsBrokenSongsInMultipleFileBasedCues) { ASSERT_EQ("Artist Four", fourth_song.artist()); ASSERT_EQ("Artist Four Album", fourth_song.album()); ASSERT_EQ("D2", fourth_song.title()); - ASSERT_EQ(61, fourth_song.beginning()); + ASSERT_EQ(61 * 1e9, fourth_song.beginning_nanosec()); ASSERT_EQ(-1, fourth_song.track()); validate_songs(song_list); @@ -302,14 +302,14 @@ TEST_F(CueParserTest, SkipsDataFiles) { ASSERT_EQ("Artist One", first_song.artist()); ASSERT_EQ("Artist One Album", first_song.album()); ASSERT_EQ("A1", first_song.title()); - ASSERT_EQ(1, first_song.beginning()); + ASSERT_EQ(1 * 1e9, first_song.beginning_nanosec()); ASSERT_EQ(-1, first_song.track()); ASSERT_TRUE(second_song.filename().endsWith("file4.mp3")); ASSERT_EQ("Artist Four", second_song.artist()); ASSERT_EQ("Artist Four Album", second_song.album()); ASSERT_EQ("D1", second_song.title()); - ASSERT_EQ(61, second_song.beginning()); + ASSERT_EQ(61 * 1e9, second_song.beginning_nanosec()); ASSERT_EQ(-1, second_song.track()); validate_songs(song_list); diff --git a/tests/m3uparser_test.cpp b/tests/m3uparser_test.cpp index 1a1b0d7e5..bca3d0a22 100644 --- a/tests/m3uparser_test.cpp +++ b/tests/m3uparser_test.cpp @@ -47,7 +47,7 @@ TEST_F(M3UParserTest, ParsesMetadata) { 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); + EXPECT_EQ(123 * 1e9, metadata.length); } TEST_F(M3UParserTest, ParsesTrackLocation) { @@ -101,7 +101,7 @@ TEST_F(M3UParserTest, ParsesSongsFromDevice) { Song s = songs[0]; EXPECT_EQ("Some Artist", s.artist()); EXPECT_EQ("Some Title", s.title()); - EXPECT_EQ(123, s.length()); + EXPECT_EQ(123 * 1e9, s.length_nanosec()); EXPECT_PRED_FORMAT2(::testing::IsSubstring, "http://foo.com/bar/somefile.mp3", s.filename().toStdString()); } @@ -118,8 +118,8 @@ TEST_F(M3UParserTest, ParsesNonExtendedM3U) { "http://foo.com/bar/somefile.mp3", songs[0].filename().toStdString()); EXPECT_PRED_FORMAT2(::testing::IsSubstring, "http://baz.com/thing.mp3", songs[1].filename().toStdString()); - EXPECT_EQ(-1, songs[0].length()); - EXPECT_EQ(-1, songs[1].length()); + EXPECT_EQ(-1, songs[0].length_nanosec()); + EXPECT_EQ(-1, songs[1].length_nanosec()); EXPECT_TRUE(songs[0].artist().isEmpty()); } @@ -130,9 +130,9 @@ TEST_F(M3UParserTest, ParsesActualM3U) { SongList songs = parser.Load(&file, "", QDir("somedir")); ASSERT_EQ(239, songs.size()); EXPECT_EQ("gravity", songs[0].title()); - EXPECT_EQ(203, songs[0].length()); + EXPECT_EQ(203 * 1e9, songs[0].length_nanosec()); EXPECT_EQ(QString::fromUtf8("ほっぴンちょっぴン"), songs.back().title()); - EXPECT_EQ(85, songs.back().length()); + EXPECT_EQ(85 * 1e9, songs.back().length_nanosec()); } TEST_F(M3UParserTest, SavesSong) { @@ -143,7 +143,7 @@ TEST_F(M3UParserTest, SavesSong) { one.set_filetype(Song::Type_Stream); one.set_title("foo"); one.set_artist("bar"); - one.set_length(123); + one.set_length_nanosec(123 * 1e9); one.set_filename("http://www.example.com/foo.mp3"); SongList songs; songs << one; diff --git a/tests/mock_librarybackend.h b/tests/mock_librarybackend.h index 4b20dc371..9141af834 100644 --- a/tests/mock_librarybackend.h +++ b/tests/mock_librarybackend.h @@ -52,7 +52,7 @@ class MockLibraryBackend : public LibraryBackendInterface { MOCK_METHOD1(GetSongById, Song(int)); MOCK_METHOD1(GetSongsByFilename, SongList(const QString&)); - MOCK_METHOD2(GetSongByFilename, Song(const QString&, int)); + MOCK_METHOD2(GetSongByFilename, Song(const QString&, qint64)); MOCK_METHOD1(AddDirectory, void(const QString&)); MOCK_METHOD1(RemoveDirectory, void(const Directory&)); diff --git a/tests/organiseformat_test.cpp b/tests/organiseformat_test.cpp index b1fd2ec72..402f19e60 100644 --- a/tests/organiseformat_test.cpp +++ b/tests/organiseformat_test.cpp @@ -37,7 +37,7 @@ TEST_F(OrganiseFormatTest, BasicReplace) { song_.set_composer("composer"); song_.set_disc(789); song_.set_genre("genre"); - song_.set_length(987); + song_.set_length_nanosec(987 * 1e9); song_.set_samplerate(654); song_.set_title("title"); song_.set_track(321); diff --git a/tests/plsparser_test.cpp b/tests/plsparser_test.cpp index 9455f9bab..07b7433ab 100644 --- a/tests/plsparser_test.cpp +++ b/tests/plsparser_test.cpp @@ -50,7 +50,7 @@ TEST_F(PLSParserTest, ParseOneTrack) { ASSERT_EQ(1, songs.length()); EXPECT_EQ("/relative/to/filename with spaces.mp3", songs[0].filename()); EXPECT_EQ("Title", songs[0].title()); - EXPECT_EQ(123, songs[0].length()); + EXPECT_EQ(123 * 1e9, songs[0].length_nanosec()); } TEST_F(PLSParserTest, ParseSomaFM) { @@ -65,7 +65,7 @@ TEST_F(PLSParserTest, ParseSomaFM) { EXPECT_EQ("SomaFM: Groove Salad (#1 128k mp3): A nicely chilled plate of ambient beats and grooves.", songs[0].title()); EXPECT_EQ("SomaFM: Groove Salad (#2 128k mp3): A nicely chilled plate of ambient beats and grooves.", songs[1].title()); EXPECT_EQ("SomaFM: Groove Salad (#3 128k mp3): A nicely chilled plate of ambient beats and grooves.", songs[2].title()); - EXPECT_EQ(-1, songs[0].length()); + EXPECT_EQ(-1, songs[0].length_nanosec()); EXPECT_EQ(Song::Type_Stream, songs[0].filetype()); } @@ -81,7 +81,7 @@ TEST_F(PLSParserTest, ParseSomaFM2) { EXPECT_EQ("SomaFM: Secret Agent (#1 128k mp3): The soundtrack for your stylish, mysterious, dangerous life. For Spies and PIs too!", songs[0].title()); EXPECT_EQ("SomaFM: Secret Agent (#2 128k mp3): The soundtrack for your stylish, mysterious, dangerous life. For Spies and PIs too!", songs[1].title()); EXPECT_EQ("SomaFM: Secret Agent (#3 128k mp3): The soundtrack for your stylish, mysterious, dangerous life. For Spies and PIs too!", songs[2].title()); - EXPECT_EQ(-1, songs[0].length()); + EXPECT_EQ(-1, songs[0].length_nanosec()); EXPECT_EQ(Song::Type_Stream, songs[0].filetype()); } @@ -93,7 +93,7 @@ TEST_F(PLSParserTest, SaveAndLoad) { Song two; two.set_filename("relative/bar.mp3"); two.set_title("Bar"); - two.set_length(123); + two.set_length_nanosec(123 * 1e9); SongList songs; songs << one << two; @@ -110,6 +110,6 @@ TEST_F(PLSParserTest, SaveAndLoad) { EXPECT_EQ("/meep/relative/bar.mp3", songs[1].filename()); EXPECT_EQ(one.title(), songs[0].title()); EXPECT_EQ(two.title(), songs[1].title()); - EXPECT_EQ(one.length(), songs[0].length()); - EXPECT_EQ(two.length(), songs[1].length()); + EXPECT_EQ(one.length_nanosec(), songs[0].length_nanosec()); + EXPECT_EQ(two.length_nanosec(), songs[1].length_nanosec()); } diff --git a/tests/songloader_test.cpp b/tests/songloader_test.cpp index 804d90380..a484a5ea5 100644 --- a/tests/songloader_test.cpp +++ b/tests/songloader_test.cpp @@ -111,7 +111,7 @@ TEST_F(SongLoaderTest, LoadLocalPls) { // Check the song got loaded ASSERT_EQ(1, loader_->songs().count()); EXPECT_EQ("Title", loader_->songs()[0].title()); - EXPECT_EQ(123, loader_->songs()[0].length()); + EXPECT_EQ(123 * 1e9, loader_->songs()[0].length_nanosec()); } TEST_F(SongLoaderTest, LoadLocalM3U) { diff --git a/tests/xspfparser_test.cpp b/tests/xspfparser_test.cpp index 0baa16678..d8c72ba0e 100644 --- a/tests/xspfparser_test.cpp +++ b/tests/xspfparser_test.cpp @@ -50,7 +50,7 @@ TEST_F(XSPFParserTest, ParsesOneTrackFromXML) { EXPECT_EQ("Bar", song.artist()); EXPECT_EQ("Baz", song.album()); EXPECT_EQ("http://example.com/foo.mp3", song.filename()); - EXPECT_EQ(60, song.length()); + EXPECT_EQ(60 * 1e9, song.length_nanosec()); EXPECT_TRUE(song.is_valid()); } @@ -91,7 +91,7 @@ TEST_F(XSPFParserTest, IgnoresInvalidLength) { XSPFParser parser(NULL); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); - EXPECT_EQ(-1, songs[0].length()); + EXPECT_EQ(-1, songs[0].length_nanosec()); } TEST_F(XSPFParserTest, SavesSong) { @@ -103,7 +103,7 @@ TEST_F(XSPFParserTest, SavesSong) { one.set_filename("http://www.example.com/foo.mp3"); one.set_filetype(Song::Type_Stream); one.set_title("foo"); - one.set_length(123); + one.set_length_nanosec(123 * 1e9); one.set_artist("bar"); SongList songs; songs << one; @@ -124,7 +124,7 @@ TEST_F(XSPFParserTest, SavesLocalFile) { one.set_filename("/bar/foo.mp3"); one.set_filetype(Song::Type_Mpeg); one.set_title("foo"); - one.set_length(123); + one.set_length_nanosec(123 * 1e9); one.set_artist("bar"); SongList songs; songs << one;