1 /**************************************************************************************** 2 * Copyright (c) 2009 Maximilian Kossick <maximilian.kossick@googlemail.com> * 3 * * 4 * This program is free software; you can redistribute it and/or modify it under * 5 * the terms of the GNU General Public License as published by the Free Software * 6 * Foundation; either version 2 of the License, or (at your option) any later * 7 * version. * 8 * * 9 * This program is distributed in the hope that it will be useful, but WITHOUT ANY * 10 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * 11 * PARTICULAR PURPOSE. See the GNU General Public License for more details. * 12 * * 13 * You should have received a copy of the GNU General Public License along with * 14 * this program. If not, see <http://www.gnu.org/licenses/>. * 15 ****************************************************************************************/ 16 17 #ifndef METAMOCK_H 18 #define METAMOCK_H 19 20 #include "core/meta/Meta.h" 21 #include "core/meta/Statistics.h" 22 #include "core/meta/support/MetaConstants.h" 23 24 #include <QDateTime> 25 #include <QVariantMap> 26 27 /** 28 * This class provides simple mocks for meta classes. 29 * it will look for the keys defined in meta/MetaConstants.h 30 * in the given QVariantMap and return those values in the respective methods. 31 */ 32 class MetaMock : public Meta::Track, Meta::Statistics 33 { 34 public: MetaMock(const QVariantMap & data)35 MetaMock( const QVariantMap &data ) : Meta::Track(), m_data( data ), m_labels( Meta::LabelList() ) {} ~MetaMock()36 ~MetaMock() override {} 37 album()38 Meta::AlbumPtr album() const override { return m_album; } year()39 Meta::YearPtr year() const override { return m_year; } genre()40 Meta::GenrePtr genre() const override { return m_genre; } artist()41 Meta::ArtistPtr artist() const override { return m_artist; } composer()42 Meta::ComposerPtr composer() const override { return m_composer; } 43 name()44 QString name() const override { return m_data.value( Meta::Field::TITLE ).toString(); } prettyName()45 QString prettyName() const override { return name(); } playableUrl()46 QUrl playableUrl() const override { return m_data.value( Meta::Field::URL ).value<QUrl>(); } prettyUrl()47 QString prettyUrl() const override { return playableUrl().url(); } uidUrl()48 QString uidUrl() const override { return m_data.value( Meta::Field::UNIQUEID ).toString(); } notPlayableReason()49 QString notPlayableReason() const override { return QStringLiteral( "dummy reason" ); } comment()50 QString comment() const override { return m_data.value( Meta::Field::COMMENT ).toString(); } bpm()51 qreal bpm() const override { return m_data.value( Meta::Field::BPM ).toDouble(); } length()52 qint64 length() const override { return m_data.value( Meta::Field::LENGTH ).toInt(); } filesize()53 int filesize() const override { return m_data.value( Meta::Field::FILESIZE ).toInt(); } sampleRate()54 int sampleRate() const override { return m_data.value( Meta::Field::SAMPLERATE ).toInt(); } bitrate()55 int bitrate() const override { return m_data.value( Meta::Field::BITRATE ).toInt(); } createDate()56 QDateTime createDate() const override { return QDateTime(); } //field missing trackNumber()57 int trackNumber() const override { return m_data.value( Meta::Field::TRACKNUMBER ).toInt(); } discNumber()58 int discNumber() const override { return m_data.value( Meta::Field::DISCNUMBER ).toInt(); } type()59 QString type() const override { return "Mock"; } 60 labels()61 Meta::LabelList labels() const override { return m_labels; } 62 statistics()63 Meta::StatisticsPtr statistics() override { return Meta::StatisticsPtr( this ); } 64 65 // Meta::Statistics getters score()66 double score() const override { return m_data.value( Meta::Field::SCORE ).toDouble(); } rating()67 int rating() const override { return m_data.value( Meta::Field::RATING ).toInt(); } firstPlayed()68 QDateTime firstPlayed() const override { return m_data.value( Meta::Field::FIRST_PLAYED ).toDateTime(); } lastPlayed()69 QDateTime lastPlayed() const override { return m_data.value( Meta::Field::LAST_PLAYED ).toDateTime(); } playCount()70 int playCount() const override { return m_data.value( Meta::Field::PLAYCOUNT ).toInt(); } 71 72 // Meta::Statistics setters setScore(double newScore)73 void setScore( double newScore ) override { m_data[Meta::Field::SCORE].setValue( newScore ); } setRating(int newRating)74 void setRating( int newRating ) override { m_data[Meta::Field::RATING].setValue( newRating ); } setFirstPlayed(const QDateTime & date)75 void setFirstPlayed( const QDateTime &date ) override { m_data[Meta::Field::FIRST_PLAYED].setValue( date ); } setLastPlayed(const QDateTime & date)76 void setLastPlayed( const QDateTime &date ) override { m_data[Meta::Field::LAST_PLAYED].setValue( date ); } setPlayCount(int newPlayCount)77 void setPlayCount( int newPlayCount ) override { m_data[Meta::Field::PLAYCOUNT].setValue( newPlayCount ); } 78 79 public: 80 QVariantMap m_data; 81 Meta::ArtistPtr m_artist; 82 Meta::AlbumPtr m_album; 83 Meta::GenrePtr m_genre; 84 Meta::YearPtr m_year; 85 Meta::ComposerPtr m_composer; 86 Meta::LabelList m_labels; 87 }; 88 89 class MockYear : public Meta::Year 90 { 91 public: MockYear(const QString & name)92 MockYear( const QString &name ) 93 : Meta::Year() 94 , m_name( name ) {} 95 name()96 QString name() const override { return m_name; } prettyName()97 QString prettyName() const override { return m_name; } tracks()98 Meta::TrackList tracks() override { return Meta::TrackList(); } 99 100 QString m_name; 101 }; 102 103 class MockGenre : public Meta::Genre 104 { 105 public: MockGenre(const QString & name)106 MockGenre( const QString &name ) 107 : Meta::Genre() 108 , m_name( name ) {} 109 name()110 QString name() const override { return m_name; } prettyName()111 QString prettyName() const override { return m_name; } tracks()112 Meta::TrackList tracks() override { return Meta::TrackList(); } 113 114 QString m_name; 115 }; 116 117 class MockComposer : public Meta::Composer 118 { 119 public: MockComposer(const QString & name)120 MockComposer( const QString &name ) 121 : Meta::Composer() 122 , m_name( name ) {} 123 name()124 QString name() const override { return m_name; } prettyName()125 QString prettyName() const override { return m_name; } tracks()126 Meta::TrackList tracks() override { return Meta::TrackList(); } 127 128 QString m_name; 129 }; 130 131 class MockArtist : public Meta::Artist 132 { 133 public: MockArtist(const QString & name)134 MockArtist( const QString &name ) 135 : Meta::Artist() 136 , m_name( name ) {} 137 name()138 QString name() const override { return m_name; } prettyName()139 QString prettyName() const override { return m_name; } tracks()140 Meta::TrackList tracks() override { return Meta::TrackList(); } albums()141 Meta::AlbumList albums() { return Meta::AlbumList(); } 142 143 QString m_name; 144 }; 145 146 class MockAlbum : public Meta::Album 147 { 148 public: 149 MockAlbum( const QString &name, const Meta::ArtistPtr &albumArtist = Meta::ArtistPtr() ) Album()150 : Meta::Album() 151 , m_name( name ) 152 , m_albumArtist( albumArtist ) {} 153 name()154 QString name() const override { return m_name; } prettyName()155 QString prettyName() const override { return m_name; } tracks()156 Meta::TrackList tracks() override { return Meta::TrackList(); } hasAlbumArtist()157 bool hasAlbumArtist() const override { return ( m_albumArtist ) ? true : false; } albumArtist()158 Meta::ArtistPtr albumArtist() const override { return m_albumArtist; } isCompilation()159 bool isCompilation() const override { return !hasAlbumArtist(); } 160 161 QString m_name; 162 Meta::ArtistPtr m_albumArtist; 163 }; 164 165 class MockLabel : public Meta::Label 166 { 167 public: MockLabel(const QString & name)168 MockLabel( const QString &name ) 169 : Meta::Label() 170 , m_name( name ) {} 171 name()172 QString name() const override { return m_name; } 173 174 QString m_name; 175 }; 176 177 #endif // METAMOCK_H 178