File indexing completed on 2024-04-28 04:48:57
0001 /* 0002 SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 #include "mediaplaylisttest.h" 0008 #include "mediaplaylisttestconfig.h" 0009 0010 #include "mediaplaylist.h" 0011 #include "databaseinterface.h" 0012 #include "trackslistener.h" 0013 0014 #include "config-upnp-qt.h" 0015 0016 #include <QSignalSpy> 0017 #include <QTest> 0018 #include <QUrl> 0019 #include <QTime> 0020 #include <QTemporaryFile> 0021 #include <QAbstractItemModelTester> 0022 0023 MediaPlayListTest::MediaPlayListTest(QObject *parent) : QObject(parent) 0024 { 0025 } 0026 0027 void MediaPlayListTest::initTestCase() 0028 { 0029 qRegisterMetaType<QHash<QString,QUrl>>("QHash<QString,QUrl>"); 0030 qRegisterMetaType<QVector<qlonglong>>("QVector<qlonglong>"); 0031 qRegisterMetaType<QHash<qlonglong,int>>("QHash<qlonglong,int>"); 0032 qRegisterMetaType<ElisaUtils::PlayListEntryType>("PlayListEntryType"); 0033 } 0034 0035 void MediaPlayListTest::simpleInitialCase() 0036 { 0037 MediaPlayList myPlayList; 0038 QAbstractItemModelTester testModel(&myPlayList); 0039 DatabaseInterface myDatabaseContent; 0040 TracksListener myListener(&myDatabaseContent); 0041 0042 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0043 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0044 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0045 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0046 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0047 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0048 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0049 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0050 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0051 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0052 0053 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0054 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0055 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0056 QCOMPARE(rowsRemovedSpy.count(), 0); 0057 QCOMPARE(rowsMovedSpy.count(), 0); 0058 QCOMPARE(rowsInsertedSpy.count(), 0); 0059 QCOMPARE(dataChangedSpy.count(), 0); 0060 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0061 QCOMPARE(newEntryInListSpy.count(), 0); 0062 0063 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0064 0065 connect(&myListener, &TracksListener::trackHasChanged, 0066 &myPlayList, &MediaPlayList::trackChanged, 0067 Qt::QueuedConnection); 0068 connect(&myListener, &TracksListener::tracksListAdded, 0069 &myPlayList, &MediaPlayList::tracksListAdded, 0070 Qt::QueuedConnection); 0071 connect(&myPlayList, &MediaPlayList::newEntryInList, 0072 &myListener, &TracksListener::newEntryInList, 0073 Qt::QueuedConnection); 0074 connect(&myPlayList, &MediaPlayList::newUrlInList, 0075 &myListener, &TracksListener::newUrlInList, 0076 Qt::QueuedConnection); 0077 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0078 &myListener, &TracksListener::trackByNameInList, 0079 Qt::QueuedConnection); 0080 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0081 &myListener, &TracksListener::tracksAdded); 0082 0083 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0084 0085 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0086 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0087 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0088 QCOMPARE(rowsRemovedSpy.count(), 0); 0089 QCOMPARE(rowsMovedSpy.count(), 0); 0090 QCOMPARE(rowsInsertedSpy.count(), 0); 0091 QCOMPARE(dataChangedSpy.count(), 0); 0092 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0093 QCOMPARE(newEntryInListSpy.count(), 0); 0094 0095 auto newTrackID = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track6"), QStringLiteral("artist1 and artist2"), QStringLiteral("album2"), 6, 1); 0096 auto newTrackData = myDatabaseContent.trackDataFromDatabaseId(newTrackID); 0097 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, newTrackID}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 0098 0099 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0100 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0101 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0102 QCOMPARE(rowsRemovedSpy.count(), 0); 0103 QCOMPARE(rowsMovedSpy.count(), 0); 0104 QCOMPARE(rowsInsertedSpy.count(), 1); 0105 QCOMPARE(dataChangedSpy.count(), 0); 0106 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0107 QCOMPARE(newEntryInListSpy.count(), 1); 0108 0109 QCOMPARE(dataChangedSpy.wait(), true); 0110 0111 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0112 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0113 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0114 QCOMPARE(rowsRemovedSpy.count(), 0); 0115 QCOMPARE(rowsMovedSpy.count(), 0); 0116 QCOMPARE(rowsInsertedSpy.count(), 1); 0117 QCOMPARE(dataChangedSpy.count(), 1); 0118 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0119 QCOMPARE(newEntryInListSpy.count(), 1); 0120 } 0121 0122 void MediaPlayListTest::enqueueAlbumCase() 0123 { 0124 MediaPlayList myPlayList; 0125 QAbstractItemModelTester testModel(&myPlayList); 0126 DatabaseInterface myDatabaseContent; 0127 TracksListener myListener(&myDatabaseContent); 0128 0129 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0130 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0131 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0132 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0133 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0134 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0135 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0136 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0137 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0138 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0139 0140 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0141 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0142 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0143 QCOMPARE(rowsRemovedSpy.count(), 0); 0144 QCOMPARE(rowsMovedSpy.count(), 0); 0145 QCOMPARE(rowsInsertedSpy.count(), 0); 0146 QCOMPARE(dataChangedSpy.count(), 0); 0147 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0148 QCOMPARE(newEntryInListSpy.count(), 0); 0149 0150 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0151 0152 connect(&myListener, &TracksListener::trackHasChanged, 0153 &myPlayList, &MediaPlayList::trackChanged, 0154 Qt::QueuedConnection); 0155 connect(&myListener, &TracksListener::tracksListAdded, 0156 &myPlayList, &MediaPlayList::tracksListAdded, 0157 Qt::QueuedConnection); 0158 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0159 &myListener, &TracksListener::trackByNameInList, 0160 Qt::QueuedConnection); 0161 connect(&myPlayList, &MediaPlayList::newEntryInList, 0162 &myListener, &TracksListener::newEntryInList, 0163 Qt::QueuedConnection); 0164 connect(&myPlayList, &MediaPlayList::newUrlInList, 0165 &myListener, &TracksListener::newUrlInList, 0166 Qt::QueuedConnection); 0167 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0168 &myListener, &TracksListener::tracksAdded); 0169 0170 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0171 0172 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0173 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0174 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0175 QCOMPARE(rowsRemovedSpy.count(), 0); 0176 QCOMPARE(rowsMovedSpy.count(), 0); 0177 QCOMPARE(rowsInsertedSpy.count(), 0); 0178 QCOMPARE(dataChangedSpy.count(), 0); 0179 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0180 QCOMPARE(newEntryInListSpy.count(), 0); 0181 0182 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, myDatabaseContent.albumIdFromTitleAndArtist(QStringLiteral("album2"), QStringLiteral("artist1"), QStringLiteral("/"))}}, 0183 QStringLiteral("album2"), {}}); 0184 0185 QVERIFY(rowsAboutToBeRemovedSpy.wait()); 0186 0187 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 0188 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0189 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 0190 QCOMPARE(rowsRemovedSpy.count(), 1); 0191 QCOMPARE(rowsMovedSpy.count(), 0); 0192 QCOMPARE(rowsInsertedSpy.count(), 2); 0193 QCOMPARE(dataChangedSpy.count(), 0); 0194 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0195 QCOMPARE(newEntryInListSpy.count(), 1); 0196 0197 QCOMPARE(myPlayList.rowCount(), 6); 0198 0199 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 0200 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0201 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0202 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0203 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0204 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 5); 0205 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0206 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track2")); 0207 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0208 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0209 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 2); 0210 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0211 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 6); 0212 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0213 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 0214 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0215 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0216 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 0217 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0218 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 7); 0219 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0220 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track4")); 0221 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0222 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0223 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TrackNumberRole).toInt(), 4); 0224 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0225 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 8); 0226 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0227 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track5")); 0228 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0229 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0230 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::TrackNumberRole).toInt(), 5); 0231 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0232 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 9); 0233 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0234 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track6")); 0235 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0236 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1 and artist2")); 0237 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::TrackNumberRole).toInt(), 6); 0238 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0239 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 10); 0240 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0241 } 0242 0243 void MediaPlayListTest::enqueueArtistCase() 0244 { 0245 MediaPlayList myPlayList; 0246 QAbstractItemModelTester testModel(&myPlayList); 0247 DatabaseInterface myDatabaseContent; 0248 TracksListener myListener(&myDatabaseContent); 0249 0250 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0251 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0252 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0253 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0254 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0255 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0256 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0257 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0258 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0259 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0260 0261 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0262 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0263 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0264 QCOMPARE(rowsRemovedSpy.count(), 0); 0265 QCOMPARE(rowsMovedSpy.count(), 0); 0266 QCOMPARE(rowsInsertedSpy.count(), 0); 0267 QCOMPARE(dataChangedSpy.count(), 0); 0268 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0269 QCOMPARE(newEntryInListSpy.count(), 0); 0270 0271 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0272 0273 connect(&myListener, &TracksListener::trackHasChanged, 0274 &myPlayList, &MediaPlayList::trackChanged, 0275 Qt::QueuedConnection); 0276 connect(&myListener, &TracksListener::tracksListAdded, 0277 &myPlayList, &MediaPlayList::tracksListAdded, 0278 Qt::QueuedConnection); 0279 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0280 &myListener, &TracksListener::trackByNameInList, 0281 Qt::QueuedConnection); 0282 connect(&myPlayList, &MediaPlayList::newEntryInList, 0283 &myListener, &TracksListener::newEntryInList, 0284 Qt::QueuedConnection); 0285 connect(&myPlayList, &MediaPlayList::newUrlInList, 0286 &myListener, &TracksListener::newUrlInList, 0287 Qt::QueuedConnection); 0288 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0289 &myListener, &TracksListener::tracksAdded); 0290 0291 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0292 0293 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0294 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0295 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0296 QCOMPARE(rowsRemovedSpy.count(), 0); 0297 QCOMPARE(rowsMovedSpy.count(), 0); 0298 QCOMPARE(rowsInsertedSpy.count(), 0); 0299 QCOMPARE(dataChangedSpy.count(), 0); 0300 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0301 QCOMPARE(newEntryInListSpy.count(), 0); 0302 0303 myPlayList.enqueueOneEntry({{{DataTypes::ElementTypeRole, ElisaUtils::Artist}}, QStringLiteral("artist1"), {}}); 0304 0305 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0306 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0307 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0308 QCOMPARE(rowsRemovedSpy.count(), 0); 0309 QCOMPARE(rowsMovedSpy.count(), 0); 0310 QCOMPARE(rowsInsertedSpy.count(), 1); 0311 QCOMPARE(dataChangedSpy.count(), 0); 0312 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0313 QCOMPARE(newEntryInListSpy.count(), 1); 0314 0315 QCOMPARE(myPlayList.rowCount(), 1); 0316 0317 QCOMPARE(rowsAboutToBeInsertedSpy.wait(), true); 0318 0319 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 0320 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0321 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 0322 QCOMPARE(rowsRemovedSpy.count(), 1); 0323 QCOMPARE(rowsMovedSpy.count(), 0); 0324 QCOMPARE(rowsInsertedSpy.count(), 2); 0325 QCOMPARE(dataChangedSpy.count(), 0); 0326 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0327 QCOMPARE(newEntryInListSpy.count(), 1); 0328 0329 QCOMPARE(myPlayList.rowCount(), 6); 0330 0331 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 0332 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 0333 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0334 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0335 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0336 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1); 0337 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumIdRole).toULongLong(), 1); 0338 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 0339 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0340 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0341 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0342 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0343 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 5); 0344 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0345 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track2")); 0346 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0347 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0348 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TrackNumberRole).toInt(), 2); 0349 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0350 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 6); 0351 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0352 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 0353 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0354 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0355 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 0356 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0357 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 7); 0358 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0359 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track4")); 0360 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0361 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0362 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::TrackNumberRole).toInt(), 4); 0363 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0364 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 8); 0365 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0366 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track5")); 0367 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 0368 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0369 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::TrackNumberRole).toInt(), 5); 0370 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0371 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 9); 0372 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::AlbumIdRole).toULongLong(), 2); 0373 } 0374 0375 void MediaPlayListTest::enqueueTrackByUrl() 0376 { 0377 MediaPlayList myPlayList; 0378 QAbstractItemModelTester testModel(&myPlayList); 0379 DatabaseInterface myDatabaseContent; 0380 TracksListener myListener(&myDatabaseContent); 0381 0382 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0383 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0384 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0385 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0386 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0387 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0388 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0389 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0390 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0391 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0392 0393 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0394 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0395 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0396 QCOMPARE(rowsRemovedSpy.count(), 0); 0397 QCOMPARE(rowsMovedSpy.count(), 0); 0398 QCOMPARE(rowsInsertedSpy.count(), 0); 0399 QCOMPARE(dataChangedSpy.count(), 0); 0400 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0401 QCOMPARE(newEntryInListSpy.count(), 0); 0402 QCOMPARE(newUrlInListSpy.count(), 0); 0403 0404 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0405 0406 connect(&myListener, &TracksListener::trackHasChanged, 0407 &myPlayList, &MediaPlayList::trackChanged, 0408 Qt::QueuedConnection); 0409 connect(&myListener, &TracksListener::tracksListAdded, 0410 &myPlayList, &MediaPlayList::tracksListAdded, 0411 Qt::QueuedConnection); 0412 connect(&myPlayList, &MediaPlayList::newEntryInList, 0413 &myListener, &TracksListener::newEntryInList, 0414 Qt::QueuedConnection); 0415 connect(&myPlayList, &MediaPlayList::newUrlInList, 0416 &myListener, &TracksListener::newUrlInList, 0417 Qt::QueuedConnection); 0418 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0419 &myListener, &TracksListener::trackByNameInList, 0420 Qt::QueuedConnection); 0421 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0422 &myListener, &TracksListener::tracksAdded); 0423 0424 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0425 0426 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0427 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0428 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0429 QCOMPARE(rowsRemovedSpy.count(), 0); 0430 QCOMPARE(rowsMovedSpy.count(), 0); 0431 QCOMPARE(rowsInsertedSpy.count(), 0); 0432 QCOMPARE(dataChangedSpy.count(), 0); 0433 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0434 QCOMPARE(newEntryInListSpy.count(), 0); 0435 QCOMPARE(newUrlInListSpy.count(), 0); 0436 0437 auto newTrackID = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track6"), QStringLiteral("artist1 and artist2"), QStringLiteral("album2"), 6, 1); 0438 auto trackData = myDatabaseContent.trackDataFromDatabaseId(newTrackID); 0439 myPlayList.enqueueFilesList({{{}, {}, trackData.resourceURI()}}); 0440 0441 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0442 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0443 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0444 QCOMPARE(rowsRemovedSpy.count(), 0); 0445 QCOMPARE(rowsMovedSpy.count(), 0); 0446 QCOMPARE(rowsInsertedSpy.count(), 1); 0447 QCOMPARE(dataChangedSpy.count(), 0); 0448 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0449 QCOMPARE(newEntryInListSpy.count(), 0); 0450 QCOMPARE(newUrlInListSpy.count(), 1); 0451 0452 QCOMPARE(dataChangedSpy.wait(), true); 0453 0454 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0455 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0456 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0457 QCOMPARE(rowsRemovedSpy.count(), 0); 0458 QCOMPARE(rowsMovedSpy.count(), 0); 0459 QCOMPARE(rowsInsertedSpy.count(), 1); 0460 QCOMPARE(dataChangedSpy.count(), 1); 0461 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0462 QCOMPARE(newEntryInListSpy.count(), 0); 0463 QCOMPARE(newUrlInListSpy.count(), 1); 0464 } 0465 0466 void MediaPlayListTest::enqueueTracksByUrl() 0467 { 0468 MediaPlayList myPlayList; 0469 QAbstractItemModelTester testModel(&myPlayList); 0470 DatabaseInterface myDatabaseContent; 0471 TracksListener myListener(&myDatabaseContent); 0472 0473 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0474 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0475 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0476 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0477 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0478 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0479 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0480 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0481 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0482 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0483 0484 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0485 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0486 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0487 QCOMPARE(rowsRemovedSpy.count(), 0); 0488 QCOMPARE(rowsMovedSpy.count(), 0); 0489 QCOMPARE(rowsInsertedSpy.count(), 0); 0490 QCOMPARE(dataChangedSpy.count(), 0); 0491 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0492 QCOMPARE(newEntryInListSpy.count(), 0); 0493 QCOMPARE(newUrlInListSpy.count(), 0); 0494 0495 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0496 0497 connect(&myListener, &TracksListener::trackHasChanged, 0498 &myPlayList, &MediaPlayList::trackChanged, 0499 Qt::QueuedConnection); 0500 connect(&myListener, &TracksListener::tracksListAdded, 0501 &myPlayList, &MediaPlayList::tracksListAdded, 0502 Qt::QueuedConnection); 0503 connect(&myPlayList, &MediaPlayList::newEntryInList, 0504 &myListener, &TracksListener::newEntryInList, 0505 Qt::QueuedConnection); 0506 connect(&myPlayList, &MediaPlayList::newUrlInList, 0507 &myListener, &TracksListener::newUrlInList, 0508 Qt::QueuedConnection); 0509 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0510 &myListener, &TracksListener::trackByNameInList, 0511 Qt::QueuedConnection); 0512 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0513 &myListener, &TracksListener::tracksAdded); 0514 0515 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0516 0517 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0518 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0519 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0520 QCOMPARE(rowsRemovedSpy.count(), 0); 0521 QCOMPARE(rowsMovedSpy.count(), 0); 0522 QCOMPARE(rowsInsertedSpy.count(), 0); 0523 QCOMPARE(dataChangedSpy.count(), 0); 0524 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0525 QCOMPARE(newEntryInListSpy.count(), 0); 0526 QCOMPARE(newUrlInListSpy.count(), 0); 0527 0528 auto firstNewTrackID = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track6"), QStringLiteral("artist1 and artist2"), QStringLiteral("album2"), 6, 1); 0529 auto firstTrackData = myDatabaseContent.trackDataFromDatabaseId(firstNewTrackID); 0530 auto secondNewTrackID = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album1"), 1, 1); 0531 auto secondTrackData = myDatabaseContent.trackDataFromDatabaseId(secondNewTrackID); 0532 myPlayList.enqueueFilesList({{{}, {}, firstTrackData.resourceURI()}, {{}, {}, secondTrackData.resourceURI()}}); 0533 0534 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0535 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0536 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0537 QCOMPARE(rowsRemovedSpy.count(), 0); 0538 QCOMPARE(rowsMovedSpy.count(), 0); 0539 QCOMPARE(rowsInsertedSpy.count(), 1); 0540 QCOMPARE(dataChangedSpy.count(), 0); 0541 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0542 QCOMPARE(newEntryInListSpy.count(), 0); 0543 QCOMPARE(newUrlInListSpy.count(), 2); 0544 0545 QCOMPARE(dataChangedSpy.wait(), true); 0546 0547 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0548 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0549 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0550 QCOMPARE(rowsRemovedSpy.count(), 0); 0551 QCOMPARE(rowsMovedSpy.count(), 0); 0552 QCOMPARE(rowsInsertedSpy.count(), 1); 0553 QCOMPARE(dataChangedSpy.count(), 2); 0554 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0555 QCOMPARE(newEntryInListSpy.count(), 0); 0556 QCOMPARE(newUrlInListSpy.count(), 2); 0557 } 0558 0559 void MediaPlayListTest::enqueueFiles() 0560 { 0561 MediaPlayList myPlayList; 0562 QAbstractItemModelTester testModel(&myPlayList); 0563 DatabaseInterface myDatabaseContent; 0564 TracksListener myListener(&myDatabaseContent); 0565 0566 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0567 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0568 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0569 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0570 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0571 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0572 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0573 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0574 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0575 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0576 0577 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0578 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0579 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0580 QCOMPARE(rowsRemovedSpy.count(), 0); 0581 QCOMPARE(rowsMovedSpy.count(), 0); 0582 QCOMPARE(rowsInsertedSpy.count(), 0); 0583 QCOMPARE(dataChangedSpy.count(), 0); 0584 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0585 QCOMPARE(newEntryInListSpy.count(), 0); 0586 QCOMPARE(newUrlInListSpy.count(), 0); 0587 0588 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0589 0590 connect(&myListener, &TracksListener::trackHasChanged, 0591 &myPlayList, &MediaPlayList::trackChanged, 0592 Qt::QueuedConnection); 0593 connect(&myListener, &TracksListener::tracksListAdded, 0594 &myPlayList, &MediaPlayList::tracksListAdded, 0595 Qt::QueuedConnection); 0596 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0597 &myListener, &TracksListener::trackByNameInList, 0598 Qt::QueuedConnection); 0599 connect(&myPlayList, &MediaPlayList::newEntryInList, 0600 &myListener, &TracksListener::newEntryInList, 0601 Qt::QueuedConnection); 0602 connect(&myPlayList, &MediaPlayList::newUrlInList, 0603 &myListener, &TracksListener::newUrlInList, 0604 Qt::QueuedConnection); 0605 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0606 &myListener, &TracksListener::tracksAdded); 0607 0608 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0609 0610 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0611 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0612 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0613 QCOMPARE(rowsRemovedSpy.count(), 0); 0614 QCOMPARE(rowsMovedSpy.count(), 0); 0615 QCOMPARE(rowsInsertedSpy.count(), 0); 0616 QCOMPARE(dataChangedSpy.count(), 0); 0617 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0618 QCOMPARE(newEntryInListSpy.count(), 0); 0619 QCOMPARE(newUrlInListSpy.count(), 0); 0620 0621 myPlayList.enqueueFilesList({{{}, {}, QUrl::fromLocalFile(QStringLiteral("/$1"))}, {{}, {}, QUrl::fromLocalFile(QStringLiteral("/$2"))}}); 0622 0623 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0624 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0625 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0626 QCOMPARE(rowsRemovedSpy.count(), 0); 0627 QCOMPARE(rowsMovedSpy.count(), 0); 0628 QCOMPARE(rowsInsertedSpy.count(), 1); 0629 QCOMPARE(dataChangedSpy.count(), 0); 0630 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0631 QCOMPARE(newEntryInListSpy.count(), 0); 0632 QCOMPARE(newUrlInListSpy.count(), 2); 0633 0634 QCOMPARE(myPlayList.rowCount(), 2); 0635 0636 QCOMPARE(dataChangedSpy.wait(300), true); 0637 0638 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0639 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0640 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0641 QCOMPARE(rowsRemovedSpy.count(), 0); 0642 QCOMPARE(rowsMovedSpy.count(), 0); 0643 QCOMPARE(rowsInsertedSpy.count(), 1); 0644 QCOMPARE(dataChangedSpy.count(), 2); 0645 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0646 QCOMPARE(newEntryInListSpy.count(), 0); 0647 QCOMPARE(newUrlInListSpy.count(), 2); 0648 0649 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 0650 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 0651 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 0652 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0653 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0654 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1); 0655 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track2")); 0656 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 0657 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist2")); 0658 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 2); 0659 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 2); 0660 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 2); 0661 } 0662 0663 void MediaPlayListTest::enqueueSampleFiles() 0664 { 0665 MediaPlayList myPlayList; 0666 QAbstractItemModelTester testModel(&myPlayList); 0667 DatabaseInterface myDatabaseContent; 0668 TracksListener myListener(&myDatabaseContent); 0669 0670 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0671 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0672 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0673 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0674 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0675 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0676 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0677 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0678 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0679 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0680 0681 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0682 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0683 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0684 QCOMPARE(rowsRemovedSpy.count(), 0); 0685 QCOMPARE(rowsMovedSpy.count(), 0); 0686 QCOMPARE(rowsInsertedSpy.count(), 0); 0687 QCOMPARE(dataChangedSpy.count(), 0); 0688 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0689 QCOMPARE(newEntryInListSpy.count(), 0); 0690 QCOMPARE(newUrlInListSpy.count(), 0); 0691 0692 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0693 0694 connect(&myListener, &TracksListener::trackHasChanged, 0695 &myPlayList, &MediaPlayList::trackChanged, 0696 Qt::QueuedConnection); 0697 connect(&myListener, &TracksListener::tracksListAdded, 0698 &myPlayList, &MediaPlayList::tracksListAdded, 0699 Qt::QueuedConnection); 0700 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0701 &myListener, &TracksListener::trackByNameInList, 0702 Qt::QueuedConnection); 0703 connect(&myPlayList, &MediaPlayList::newEntryInList, 0704 &myListener, &TracksListener::newEntryInList, 0705 Qt::QueuedConnection); 0706 connect(&myPlayList, &MediaPlayList::newUrlInList, 0707 &myListener, &TracksListener::newUrlInList, 0708 Qt::QueuedConnection); 0709 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0710 &myListener, &TracksListener::tracksAdded); 0711 0712 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0713 0714 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0715 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0716 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0717 QCOMPARE(rowsRemovedSpy.count(), 0); 0718 QCOMPARE(rowsMovedSpy.count(), 0); 0719 QCOMPARE(rowsInsertedSpy.count(), 0); 0720 QCOMPARE(dataChangedSpy.count(), 0); 0721 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0722 QCOMPARE(newEntryInListSpy.count(), 0); 0723 QCOMPARE(newUrlInListSpy.count(), 0); 0724 0725 myPlayList.enqueueFilesList({{{}, {}, QUrl::fromLocalFile(QStringLiteral(MEDIAPLAYLIST_TESTS_SAMPLE_FILES_PATH) + QStringLiteral("/test.ogg"))}, 0726 {{}, {}, QUrl::fromLocalFile(QStringLiteral(MEDIAPLAYLIST_TESTS_SAMPLE_FILES_PATH) + QStringLiteral("/test2.ogg"))}}); 0727 0728 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0729 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0730 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0731 QCOMPARE(rowsRemovedSpy.count(), 0); 0732 QCOMPARE(rowsMovedSpy.count(), 0); 0733 QCOMPARE(rowsInsertedSpy.count(), 1); 0734 QCOMPARE(dataChangedSpy.count(), 0); 0735 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0736 QCOMPARE(newEntryInListSpy.count(), 0); 0737 QCOMPARE(newUrlInListSpy.count(), 2); 0738 0739 QCOMPARE(myPlayList.rowCount(), 2); 0740 0741 while (dataChangedSpy.count() < 2) { 0742 QCOMPARE(dataChangedSpy.wait(), true); 0743 } 0744 0745 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0746 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0747 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 0748 QCOMPARE(rowsRemovedSpy.count(), 0); 0749 QCOMPARE(rowsMovedSpy.count(), 0); 0750 QCOMPARE(rowsInsertedSpy.count(), 1); 0751 QCOMPARE(dataChangedSpy.count(), 2); 0752 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0753 QCOMPARE(newEntryInListSpy.count(), 0); 0754 QCOMPARE(newUrlInListSpy.count(), 2); 0755 0756 #if KFFileMetaData_FOUND 0757 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("Title")); 0758 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("Test")); 0759 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("Artist")); 0760 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0761 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0762 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1000); 0763 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("Title2")); 0764 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("Test2")); 0765 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("Artist2")); 0766 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 0767 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 0768 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1000); 0769 #else 0770 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("test.ogg")); 0771 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("")); 0772 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("")); 0773 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), -1); 0774 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), -1); 0775 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 0); 0776 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("test2.ogg")); 0777 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("")); 0778 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("")); 0779 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), -1); 0780 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), -1); 0781 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 0); 0782 #endif 0783 } 0784 0785 void MediaPlayListTest::enqueueEmpty() 0786 { 0787 MediaPlayList myPlayList; 0788 QAbstractItemModelTester testModel(&myPlayList); 0789 DatabaseInterface myDatabaseContent; 0790 TracksListener myListener(&myDatabaseContent); 0791 0792 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0793 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0794 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0795 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0796 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0797 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0798 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0799 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0800 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0801 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0802 0803 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0804 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0805 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0806 QCOMPARE(rowsRemovedSpy.count(), 0); 0807 QCOMPARE(rowsMovedSpy.count(), 0); 0808 QCOMPARE(rowsInsertedSpy.count(), 0); 0809 QCOMPARE(dataChangedSpy.count(), 0); 0810 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0811 QCOMPARE(newEntryInListSpy.count(), 0); 0812 0813 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0814 0815 connect(&myListener, &TracksListener::trackHasChanged, 0816 &myPlayList, &MediaPlayList::trackChanged, 0817 Qt::QueuedConnection); 0818 connect(&myListener, &TracksListener::tracksListAdded, 0819 &myPlayList, &MediaPlayList::tracksListAdded, 0820 Qt::QueuedConnection); 0821 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0822 &myListener, &TracksListener::trackByNameInList, 0823 Qt::QueuedConnection); 0824 connect(&myPlayList, &MediaPlayList::newEntryInList, 0825 &myListener, &TracksListener::newEntryInList, 0826 Qt::QueuedConnection); 0827 connect(&myPlayList, &MediaPlayList::newUrlInList, 0828 &myListener, &TracksListener::newUrlInList, 0829 Qt::QueuedConnection); 0830 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0831 &myListener, &TracksListener::tracksAdded); 0832 0833 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0834 0835 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0836 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0837 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0838 QCOMPARE(rowsRemovedSpy.count(), 0); 0839 QCOMPARE(rowsMovedSpy.count(), 0); 0840 QCOMPARE(rowsInsertedSpy.count(), 0); 0841 QCOMPARE(dataChangedSpy.count(), 0); 0842 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0843 QCOMPARE(newEntryInListSpy.count(), 0); 0844 0845 myPlayList.enqueueOneEntry(DataTypes::EntryData{}); 0846 0847 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0848 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0849 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0850 QCOMPARE(rowsRemovedSpy.count(), 0); 0851 QCOMPARE(rowsMovedSpy.count(), 0); 0852 QCOMPARE(rowsInsertedSpy.count(), 0); 0853 QCOMPARE(dataChangedSpy.count(), 0); 0854 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0855 QCOMPARE(newEntryInListSpy.count(), 0); 0856 0857 myPlayList.enqueueOneEntry(DataTypes::EntryData{}); 0858 0859 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0860 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0861 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0862 QCOMPARE(rowsRemovedSpy.count(), 0); 0863 QCOMPARE(rowsMovedSpy.count(), 0); 0864 QCOMPARE(rowsInsertedSpy.count(), 0); 0865 QCOMPARE(dataChangedSpy.count(), 0); 0866 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0867 QCOMPARE(newEntryInListSpy.count(), 0); 0868 0869 myPlayList.enqueueOneEntry(DataTypes::EntryData{}); 0870 0871 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0872 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0873 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0874 QCOMPARE(rowsRemovedSpy.count(), 0); 0875 QCOMPARE(rowsMovedSpy.count(), 0); 0876 QCOMPARE(rowsInsertedSpy.count(), 0); 0877 QCOMPARE(dataChangedSpy.count(), 0); 0878 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0879 QCOMPARE(newEntryInListSpy.count(), 0); 0880 0881 myPlayList.enqueueOneEntry(DataTypes::EntryData{}); 0882 0883 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0884 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0885 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0886 QCOMPARE(rowsRemovedSpy.count(), 0); 0887 QCOMPARE(rowsMovedSpy.count(), 0); 0888 QCOMPARE(rowsInsertedSpy.count(), 0); 0889 QCOMPARE(dataChangedSpy.count(), 0); 0890 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0891 QCOMPARE(newEntryInListSpy.count(), 0); 0892 0893 myPlayList.enqueueOneEntry(DataTypes::EntryData{}); 0894 0895 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0896 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0897 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0898 QCOMPARE(rowsRemovedSpy.count(), 0); 0899 QCOMPARE(rowsMovedSpy.count(), 0); 0900 QCOMPARE(rowsInsertedSpy.count(), 0); 0901 QCOMPARE(dataChangedSpy.count(), 0); 0902 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0903 QCOMPARE(newEntryInListSpy.count(), 0); 0904 } 0905 0906 void MediaPlayListTest::removeFirstTrackOfAlbum() 0907 { 0908 MediaPlayList myPlayList; 0909 QAbstractItemModelTester testModel(&myPlayList); 0910 DatabaseInterface myDatabaseContent; 0911 TracksListener myListener(&myDatabaseContent); 0912 0913 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 0914 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 0915 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 0916 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 0917 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 0918 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 0919 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 0920 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 0921 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 0922 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 0923 0924 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0925 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0926 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0927 QCOMPARE(rowsRemovedSpy.count(), 0); 0928 QCOMPARE(rowsMovedSpy.count(), 0); 0929 QCOMPARE(rowsInsertedSpy.count(), 0); 0930 QCOMPARE(dataChangedSpy.count(), 0); 0931 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0932 QCOMPARE(newEntryInListSpy.count(), 0); 0933 0934 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 0935 0936 connect(&myListener, &TracksListener::trackHasChanged, 0937 &myPlayList, &MediaPlayList::trackChanged, 0938 Qt::QueuedConnection); 0939 connect(&myListener, &TracksListener::tracksListAdded, 0940 &myPlayList, &MediaPlayList::tracksListAdded, 0941 Qt::QueuedConnection); 0942 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 0943 &myListener, &TracksListener::trackByNameInList, 0944 Qt::QueuedConnection); 0945 connect(&myPlayList, &MediaPlayList::newEntryInList, 0946 &myListener, &TracksListener::newEntryInList, 0947 Qt::QueuedConnection); 0948 connect(&myPlayList, &MediaPlayList::newUrlInList, 0949 &myListener, &TracksListener::newUrlInList, 0950 Qt::QueuedConnection); 0951 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 0952 &myListener, &TracksListener::tracksAdded); 0953 0954 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 0955 0956 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 0957 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0958 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 0959 QCOMPARE(rowsRemovedSpy.count(), 0); 0960 QCOMPARE(rowsMovedSpy.count(), 0); 0961 QCOMPARE(rowsInsertedSpy.count(), 0); 0962 QCOMPARE(dataChangedSpy.count(), 0); 0963 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0964 QCOMPARE(newEntryInListSpy.count(), 0); 0965 0966 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, myDatabaseContent.albumIdFromTitleAndArtist(QStringLiteral("album2"), QStringLiteral("artist1"), QStringLiteral("/"))}}, 0967 QStringLiteral("album2"), {}}); 0968 0969 QVERIFY(rowsAboutToBeRemovedSpy.wait()); 0970 0971 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 0972 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0973 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 0974 QCOMPARE(rowsRemovedSpy.count(), 1); 0975 QCOMPARE(rowsMovedSpy.count(), 0); 0976 QCOMPARE(rowsInsertedSpy.count(), 2); 0977 QCOMPARE(dataChangedSpy.count(), 0); 0978 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0979 QCOMPARE(newEntryInListSpy.count(), 1); 0980 0981 myPlayList.removeRows(0, 1); 0982 0983 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 2); 0984 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 0985 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 0986 QCOMPARE(rowsRemovedSpy.count(), 2); 0987 QCOMPARE(rowsMovedSpy.count(), 0); 0988 QCOMPARE(rowsInsertedSpy.count(), 2); 0989 QCOMPARE(dataChangedSpy.count(), 0); 0990 QCOMPARE(newTrackByNameInListSpy.count(), 0); 0991 QCOMPARE(newEntryInListSpy.count(), 1); 0992 } 0993 0994 void MediaPlayListTest::testTrackBeenRemoved() 0995 { 0996 MediaPlayList myPlayList; 0997 QAbstractItemModelTester testModel(&myPlayList); 0998 DatabaseInterface myDatabaseContent; 0999 TracksListener myListener(&myDatabaseContent); 1000 1001 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1002 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1003 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1004 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1005 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1006 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1007 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1008 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1009 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1010 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1011 1012 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1013 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1014 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1015 QCOMPARE(rowsRemovedSpy.count(), 0); 1016 QCOMPARE(rowsMovedSpy.count(), 0); 1017 QCOMPARE(rowsInsertedSpy.count(), 0); 1018 QCOMPARE(dataChangedSpy.count(), 0); 1019 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1020 QCOMPARE(newEntryInListSpy.count(), 0); 1021 1022 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 1023 1024 connect(&myListener, &TracksListener::trackHasChanged, 1025 &myPlayList, &MediaPlayList::trackChanged, 1026 Qt::QueuedConnection); 1027 connect(&myListener, &TracksListener::tracksListAdded, 1028 &myPlayList, &MediaPlayList::tracksListAdded, 1029 Qt::QueuedConnection); 1030 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1031 &myListener, &TracksListener::trackByNameInList, 1032 Qt::QueuedConnection); 1033 connect(&myPlayList, &MediaPlayList::newEntryInList, 1034 &myListener, &TracksListener::newEntryInList, 1035 Qt::QueuedConnection); 1036 connect(&myPlayList, &MediaPlayList::newUrlInList, 1037 &myListener, &TracksListener::newUrlInList, 1038 Qt::QueuedConnection); 1039 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1040 &myListener, &TracksListener::tracksAdded); 1041 1042 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1043 1044 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1045 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1046 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1047 QCOMPARE(rowsRemovedSpy.count(), 0); 1048 QCOMPARE(rowsMovedSpy.count(), 0); 1049 QCOMPARE(rowsInsertedSpy.count(), 0); 1050 QCOMPARE(dataChangedSpy.count(), 0); 1051 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1052 QCOMPARE(newEntryInListSpy.count(), 0); 1053 1054 myPlayList.enqueueOneEntry(DataTypes::EntryData{{{DataTypes::ElementTypeRole, ElisaUtils::Artist}}, QStringLiteral("artist1"), {}}); 1055 1056 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1057 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1058 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1059 QCOMPARE(rowsRemovedSpy.count(), 0); 1060 QCOMPARE(rowsMovedSpy.count(), 0); 1061 QCOMPARE(rowsInsertedSpy.count(), 1); 1062 QCOMPARE(dataChangedSpy.count(), 0); 1063 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1064 QCOMPARE(newEntryInListSpy.count(), 1); 1065 1066 QCOMPARE(rowsAboutToBeInsertedSpy.wait(), true); 1067 1068 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 1069 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1070 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1071 QCOMPARE(rowsRemovedSpy.count(), 1); 1072 QCOMPARE(rowsMovedSpy.count(), 0); 1073 QCOMPARE(rowsInsertedSpy.count(), 2); 1074 QCOMPARE(dataChangedSpy.count(), 0); 1075 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1076 QCOMPARE(newEntryInListSpy.count(), 1); 1077 1078 QCOMPARE(myPlayList.rowCount(), 6); 1079 1080 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1081 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track1")); 1082 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1083 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("Various Artists")); 1084 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album1")); 1085 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 1); 1086 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1087 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1088 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track1")); 1089 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1090 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1091 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1092 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 1); 1093 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1094 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1095 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track2")); 1096 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1097 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1098 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1099 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 2); 1100 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1101 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1102 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track3")); 1103 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1104 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1105 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1106 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 3); 1107 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1108 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1109 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track4")); 1110 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1111 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1112 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1113 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 4); 1114 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1115 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1116 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track5")); 1117 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1118 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1119 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1120 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 5); 1121 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1122 1123 auto removedTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), 1124 QStringLiteral("album2"), 2, 1); 1125 1126 QCOMPARE(removedTrackId != 0, true); 1127 1128 auto removedTrack = myDatabaseContent.trackDataFromDatabaseId(removedTrackId); 1129 1130 QVERIFY(!removedTrack.isEmpty()); 1131 1132 myPlayList.trackRemoved(removedTrack[DataTypes::DatabaseIdRole].toULongLong()); 1133 1134 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 1135 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1136 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1137 QCOMPARE(rowsRemovedSpy.count(), 1); 1138 QCOMPARE(rowsMovedSpy.count(), 0); 1139 QCOMPARE(rowsInsertedSpy.count(), 2); 1140 QCOMPARE(dataChangedSpy.count(), 1); 1141 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1142 QCOMPARE(newEntryInListSpy.count(), 1); 1143 1144 QCOMPARE(myPlayList.rowCount(), 6); 1145 1146 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1147 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track1")); 1148 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1149 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("Various Artists")); 1150 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album1")); 1151 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 1); 1152 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1153 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1154 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track1")); 1155 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1156 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1157 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1158 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 1); 1159 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1160 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), false); 1161 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track2")); 1162 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1163 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1164 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1165 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), -1); 1166 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 0); 1167 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1168 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track3")); 1169 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1170 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1171 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1172 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 3); 1173 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1174 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1175 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track4")); 1176 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1177 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1178 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1179 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 4); 1180 QCOMPARE(myPlayList.data(myPlayList.index(4, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1181 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::IsValidRole).toBool(), true); 1182 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::TitleRole).toString(), QStringLiteral("track5")); 1183 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::ArtistRole).toString(), QStringLiteral("artist1")); 1184 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::AlbumArtistRole).toString(), QStringLiteral("artist1")); 1185 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::AlbumRole).toString(), QStringLiteral("album2")); 1186 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::TrackNumberRole).toInt(), 5); 1187 QCOMPARE(myPlayList.data(myPlayList.index(5, 0), MediaPlayList::ColumnsRoles::DiscNumberRole).toInt(), 1); 1188 } 1189 1190 void MediaPlayListTest::testSetData() 1191 { 1192 MediaPlayList myPlayList; 1193 QAbstractItemModelTester testModel(&myPlayList); 1194 DatabaseInterface myDatabaseContent; 1195 TracksListener myListener(&myDatabaseContent); 1196 1197 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1198 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1199 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1200 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1201 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1202 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1203 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1204 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1205 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1206 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1207 1208 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1209 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1210 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1211 QCOMPARE(rowsRemovedSpy.count(), 0); 1212 QCOMPARE(rowsMovedSpy.count(), 0); 1213 QCOMPARE(rowsInsertedSpy.count(), 0); 1214 QCOMPARE(dataChangedSpy.count(), 0); 1215 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1216 QCOMPARE(newEntryInListSpy.count(), 0); 1217 1218 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 1219 1220 connect(&myListener, &TracksListener::trackHasChanged, 1221 &myPlayList, &MediaPlayList::trackChanged, 1222 Qt::QueuedConnection); 1223 connect(&myListener, &TracksListener::tracksListAdded, 1224 &myPlayList, &MediaPlayList::tracksListAdded, 1225 Qt::QueuedConnection); 1226 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1227 &myListener, &TracksListener::trackByNameInList, 1228 Qt::QueuedConnection); 1229 connect(&myPlayList, &MediaPlayList::newEntryInList, 1230 &myListener, &TracksListener::newEntryInList, 1231 Qt::QueuedConnection); 1232 connect(&myPlayList, &MediaPlayList::newUrlInList, 1233 &myListener, &TracksListener::newUrlInList, 1234 Qt::QueuedConnection); 1235 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1236 &myListener, &TracksListener::tracksAdded); 1237 1238 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1239 1240 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1241 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1242 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1243 QCOMPARE(rowsRemovedSpy.count(), 0); 1244 QCOMPARE(rowsMovedSpy.count(), 0); 1245 QCOMPARE(rowsInsertedSpy.count(), 0); 1246 QCOMPARE(dataChangedSpy.count(), 0); 1247 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1248 QCOMPARE(newEntryInListSpy.count(), 0); 1249 1250 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist2"), 1251 QStringLiteral("album3"), 1, 1); 1252 myPlayList.enqueueOneEntry(DataTypes::EntryData{{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1253 1254 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1255 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1256 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1257 QCOMPARE(rowsRemovedSpy.count(), 0); 1258 QCOMPARE(rowsMovedSpy.count(), 0); 1259 QCOMPARE(rowsInsertedSpy.count(), 1); 1260 QCOMPARE(dataChangedSpy.count(), 0); 1261 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1262 QCOMPARE(newEntryInListSpy.count(), 1); 1263 1264 QCOMPARE(dataChangedSpy.wait(), true); 1265 1266 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1267 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1268 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1269 QCOMPARE(rowsRemovedSpy.count(), 0); 1270 QCOMPARE(rowsMovedSpy.count(), 0); 1271 QCOMPARE(rowsInsertedSpy.count(), 1); 1272 QCOMPARE(dataChangedSpy.count(), 1); 1273 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1274 QCOMPARE(newEntryInListSpy.count(), 1); 1275 1276 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1277 1278 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), 1279 QStringLiteral("album1"), 1, 1); 1280 myPlayList.enqueueOneEntry(DataTypes::EntryData{{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1281 1282 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1283 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1284 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1285 QCOMPARE(rowsRemovedSpy.count(), 0); 1286 QCOMPARE(rowsMovedSpy.count(), 0); 1287 QCOMPARE(rowsInsertedSpy.count(), 2); 1288 QCOMPARE(dataChangedSpy.count(), 1); 1289 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1290 QCOMPARE(newEntryInListSpy.count(), 2); 1291 1292 QCOMPARE(dataChangedSpy.wait(), true); 1293 1294 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1295 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1296 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1297 QCOMPARE(rowsRemovedSpy.count(), 0); 1298 QCOMPARE(rowsMovedSpy.count(), 0); 1299 QCOMPARE(rowsInsertedSpy.count(), 2); 1300 QCOMPARE(dataChangedSpy.count(), 2); 1301 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1302 QCOMPARE(newEntryInListSpy.count(), 2); 1303 1304 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1305 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1306 1307 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist2"), 1308 QStringLiteral("album3"), 2, 1); 1309 myPlayList.enqueueOneEntry(DataTypes::EntryData{{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1310 1311 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1312 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1313 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1314 QCOMPARE(rowsRemovedSpy.count(), 0); 1315 QCOMPARE(rowsMovedSpy.count(), 0); 1316 QCOMPARE(rowsInsertedSpy.count(), 3); 1317 QCOMPARE(dataChangedSpy.count(), 2); 1318 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1319 QCOMPARE(newEntryInListSpy.count(), 3); 1320 1321 QCOMPARE(dataChangedSpy.wait(), true); 1322 1323 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1324 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1325 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1326 QCOMPARE(rowsRemovedSpy.count(), 0); 1327 QCOMPARE(rowsMovedSpy.count(), 0); 1328 QCOMPARE(rowsInsertedSpy.count(), 3); 1329 QCOMPARE(dataChangedSpy.count(), 3); 1330 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1331 QCOMPARE(newEntryInListSpy.count(), 3); 1332 1333 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1334 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1335 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1336 1337 QCOMPARE(myPlayList.setData(myPlayList.index(2, 0), true, MediaPlayList::ColumnsRoles::IsPlayingRole), true); 1338 1339 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1340 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1341 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1342 QCOMPARE(rowsRemovedSpy.count(), 0); 1343 QCOMPARE(rowsMovedSpy.count(), 0); 1344 QCOMPARE(rowsInsertedSpy.count(), 3); 1345 QCOMPARE(dataChangedSpy.count(), 4); 1346 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1347 QCOMPARE(newEntryInListSpy.count(), 3); 1348 1349 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1350 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), false); 1351 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ColumnsRoles::IsPlayingRole).toBool(), true); 1352 1353 QCOMPARE(myPlayList.setData(myPlayList.index(2, 0), true, MediaPlayList::ColumnsRoles::SecondaryTextRole), false); 1354 1355 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1356 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1357 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1358 QCOMPARE(rowsRemovedSpy.count(), 0); 1359 QCOMPARE(rowsMovedSpy.count(), 0); 1360 QCOMPARE(rowsInsertedSpy.count(), 3); 1361 QCOMPARE(dataChangedSpy.count(), 4); 1362 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1363 QCOMPARE(newEntryInListSpy.count(), 3); 1364 1365 QCOMPARE(myPlayList.setData(myPlayList.index(4, 0), true, MediaPlayList::ColumnsRoles::TitleRole), false); 1366 1367 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1368 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1369 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1370 QCOMPARE(rowsRemovedSpy.count(), 0); 1371 QCOMPARE(rowsMovedSpy.count(), 0); 1372 QCOMPARE(rowsInsertedSpy.count(), 3); 1373 QCOMPARE(dataChangedSpy.count(), 4); 1374 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1375 QCOMPARE(newEntryInListSpy.count(), 3); 1376 1377 QCOMPARE(myPlayList.setData({}, true, MediaPlayList::ColumnsRoles::TitleRole), false); 1378 1379 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1380 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1381 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1382 QCOMPARE(rowsRemovedSpy.count(), 0); 1383 QCOMPARE(rowsMovedSpy.count(), 0); 1384 QCOMPARE(rowsInsertedSpy.count(), 3); 1385 QCOMPARE(dataChangedSpy.count(), 4); 1386 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1387 QCOMPARE(newEntryInListSpy.count(), 3); 1388 } 1389 1390 void MediaPlayListTest::testHasHeader() 1391 { 1392 MediaPlayList myPlayList; 1393 QAbstractItemModelTester testModel(&myPlayList); 1394 DatabaseInterface myDatabaseContent; 1395 TracksListener myListener(&myDatabaseContent); 1396 1397 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1398 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1399 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1400 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1401 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1402 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1403 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1404 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1405 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1406 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1407 1408 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1409 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1410 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1411 QCOMPARE(rowsRemovedSpy.count(), 0); 1412 QCOMPARE(rowsMovedSpy.count(), 0); 1413 QCOMPARE(rowsInsertedSpy.count(), 0); 1414 QCOMPARE(dataChangedSpy.count(), 0); 1415 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1416 QCOMPARE(newEntryInListSpy.count(), 0); 1417 1418 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 1419 1420 connect(&myListener, &TracksListener::trackHasChanged, 1421 &myPlayList, &MediaPlayList::trackChanged, 1422 Qt::QueuedConnection); 1423 connect(&myListener, &TracksListener::tracksListAdded, 1424 &myPlayList, &MediaPlayList::tracksListAdded, 1425 Qt::QueuedConnection); 1426 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1427 &myListener, &TracksListener::trackByNameInList, 1428 Qt::QueuedConnection); 1429 connect(&myPlayList, &MediaPlayList::newEntryInList, 1430 &myListener, &TracksListener::newEntryInList, 1431 Qt::QueuedConnection); 1432 connect(&myPlayList, &MediaPlayList::newUrlInList, 1433 &myListener, &TracksListener::newUrlInList, 1434 Qt::QueuedConnection); 1435 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1436 &myListener, &TracksListener::tracksAdded); 1437 1438 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1439 1440 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1441 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1442 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1443 QCOMPARE(rowsRemovedSpy.count(), 0); 1444 QCOMPARE(rowsMovedSpy.count(), 0); 1445 QCOMPARE(rowsInsertedSpy.count(), 0); 1446 QCOMPARE(dataChangedSpy.count(), 0); 1447 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1448 QCOMPARE(newEntryInListSpy.count(), 0); 1449 1450 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 1451 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1452 1453 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1454 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1455 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1456 QCOMPARE(rowsRemovedSpy.count(), 0); 1457 QCOMPARE(rowsMovedSpy.count(), 0); 1458 QCOMPARE(rowsInsertedSpy.count(), 1); 1459 QCOMPARE(dataChangedSpy.count(), 0); 1460 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1461 QCOMPARE(newEntryInListSpy.count(), 1); 1462 1463 QCOMPARE(dataChangedSpy.wait(), true); 1464 1465 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1466 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1467 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1468 QCOMPARE(rowsRemovedSpy.count(), 0); 1469 QCOMPARE(rowsMovedSpy.count(), 0); 1470 QCOMPARE(rowsInsertedSpy.count(), 1); 1471 QCOMPARE(dataChangedSpy.count(), 1); 1472 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1473 QCOMPARE(newEntryInListSpy.count(), 1); 1474 1475 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album1"), 1, 1); 1476 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1477 1478 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1479 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1480 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1481 QCOMPARE(rowsRemovedSpy.count(), 0); 1482 QCOMPARE(rowsMovedSpy.count(), 0); 1483 QCOMPARE(rowsInsertedSpy.count(), 2); 1484 QCOMPARE(dataChangedSpy.count(), 1); 1485 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1486 QCOMPARE(newEntryInListSpy.count(), 2); 1487 1488 QCOMPARE(dataChangedSpy.wait(), true); 1489 1490 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1491 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1492 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1493 QCOMPARE(rowsRemovedSpy.count(), 0); 1494 QCOMPARE(rowsMovedSpy.count(), 0); 1495 QCOMPARE(rowsInsertedSpy.count(), 2); 1496 QCOMPARE(dataChangedSpy.count(), 2); 1497 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1498 QCOMPARE(newEntryInListSpy.count(), 2); 1499 1500 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 1501 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1502 1503 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1504 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1505 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1506 QCOMPARE(rowsRemovedSpy.count(), 0); 1507 QCOMPARE(rowsMovedSpy.count(), 0); 1508 QCOMPARE(rowsInsertedSpy.count(), 3); 1509 QCOMPARE(dataChangedSpy.count(), 2); 1510 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1511 QCOMPARE(newEntryInListSpy.count(), 3); 1512 1513 QCOMPARE(dataChangedSpy.wait(), true); 1514 1515 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1516 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1517 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1518 QCOMPARE(rowsRemovedSpy.count(), 0); 1519 QCOMPARE(rowsMovedSpy.count(), 0); 1520 QCOMPARE(rowsInsertedSpy.count(), 3); 1521 QCOMPARE(dataChangedSpy.count(), 3); 1522 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1523 QCOMPARE(newEntryInListSpy.count(), 3); 1524 1525 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 1526 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1527 1528 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1529 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1530 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1531 QCOMPARE(rowsRemovedSpy.count(), 0); 1532 QCOMPARE(rowsMovedSpy.count(), 0); 1533 QCOMPARE(rowsInsertedSpy.count(), 4); 1534 QCOMPARE(dataChangedSpy.count(), 3); 1535 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1536 QCOMPARE(newEntryInListSpy.count(), 4); 1537 1538 QCOMPARE(dataChangedSpy.wait(), true); 1539 1540 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1541 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1542 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1543 QCOMPARE(rowsRemovedSpy.count(), 0); 1544 QCOMPARE(rowsMovedSpy.count(), 0); 1545 QCOMPARE(rowsInsertedSpy.count(), 4); 1546 QCOMPARE(dataChangedSpy.count(), 4); 1547 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1548 QCOMPARE(newEntryInListSpy.count(), 4); 1549 1550 myPlayList.removeRows(2, 1); 1551 1552 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 1553 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1554 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1555 QCOMPARE(rowsRemovedSpy.count(), 1); 1556 QCOMPARE(rowsMovedSpy.count(), 0); 1557 QCOMPARE(rowsInsertedSpy.count(), 4); 1558 QCOMPARE(dataChangedSpy.count(), 4); 1559 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1560 QCOMPARE(newEntryInListSpy.count(), 4); 1561 } 1562 1563 void MediaPlayListTest::testHasHeaderWithRemove() 1564 { 1565 MediaPlayList myPlayList; 1566 QAbstractItemModelTester testModel(&myPlayList); 1567 DatabaseInterface myDatabaseContent; 1568 TracksListener myListener(&myDatabaseContent); 1569 1570 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1571 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1572 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1573 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1574 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1575 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1576 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1577 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1578 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1579 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1580 1581 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1582 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1583 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1584 QCOMPARE(rowsRemovedSpy.count(), 0); 1585 QCOMPARE(rowsMovedSpy.count(), 0); 1586 QCOMPARE(rowsInsertedSpy.count(), 0); 1587 QCOMPARE(dataChangedSpy.count(), 0); 1588 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1589 QCOMPARE(newEntryInListSpy.count(), 0); 1590 1591 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 1592 1593 connect(&myListener, &TracksListener::trackHasChanged, 1594 &myPlayList, &MediaPlayList::trackChanged, 1595 Qt::QueuedConnection); 1596 connect(&myListener, &TracksListener::tracksListAdded, 1597 &myPlayList, &MediaPlayList::tracksListAdded, 1598 Qt::QueuedConnection); 1599 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1600 &myListener, &TracksListener::trackByNameInList, 1601 Qt::QueuedConnection); 1602 connect(&myPlayList, &MediaPlayList::newEntryInList, 1603 &myListener, &TracksListener::newEntryInList, 1604 Qt::QueuedConnection); 1605 connect(&myPlayList, &MediaPlayList::newUrlInList, 1606 &myListener, &TracksListener::newUrlInList, 1607 Qt::QueuedConnection); 1608 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1609 &myListener, &TracksListener::tracksAdded); 1610 1611 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1612 1613 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1614 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1615 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1616 QCOMPARE(rowsRemovedSpy.count(), 0); 1617 QCOMPARE(rowsMovedSpy.count(), 0); 1618 QCOMPARE(rowsInsertedSpy.count(), 0); 1619 QCOMPARE(dataChangedSpy.count(), 0); 1620 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1621 QCOMPARE(newEntryInListSpy.count(), 0); 1622 1623 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 1624 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1625 1626 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1627 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1628 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1629 QCOMPARE(rowsRemovedSpy.count(), 0); 1630 QCOMPARE(rowsMovedSpy.count(), 0); 1631 QCOMPARE(rowsInsertedSpy.count(), 1); 1632 QCOMPARE(dataChangedSpy.count(), 0); 1633 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1634 QCOMPARE(newEntryInListSpy.count(), 1); 1635 1636 QCOMPARE(dataChangedSpy.wait(), true); 1637 1638 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1639 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1640 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1641 QCOMPARE(rowsRemovedSpy.count(), 0); 1642 QCOMPARE(rowsMovedSpy.count(), 0); 1643 QCOMPARE(rowsInsertedSpy.count(), 1); 1644 QCOMPARE(dataChangedSpy.count(), 1); 1645 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1646 QCOMPARE(newEntryInListSpy.count(), 1); 1647 1648 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 1649 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1650 1651 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1652 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1653 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1654 QCOMPARE(rowsRemovedSpy.count(), 0); 1655 QCOMPARE(rowsMovedSpy.count(), 0); 1656 QCOMPARE(rowsInsertedSpy.count(), 2); 1657 QCOMPARE(dataChangedSpy.count(), 1); 1658 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1659 QCOMPARE(newEntryInListSpy.count(), 2); 1660 1661 QCOMPARE(dataChangedSpy.wait(), true); 1662 1663 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1664 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1665 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1666 QCOMPARE(rowsRemovedSpy.count(), 0); 1667 QCOMPARE(rowsMovedSpy.count(), 0); 1668 QCOMPARE(rowsInsertedSpy.count(), 2); 1669 QCOMPARE(dataChangedSpy.count(), 2); 1670 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1671 QCOMPARE(newEntryInListSpy.count(), 2); 1672 1673 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album1"), 1, 1); 1674 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1675 1676 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1677 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1678 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1679 QCOMPARE(rowsRemovedSpy.count(), 0); 1680 QCOMPARE(rowsMovedSpy.count(), 0); 1681 QCOMPARE(rowsInsertedSpy.count(), 3); 1682 QCOMPARE(dataChangedSpy.count(), 2); 1683 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1684 QCOMPARE(newEntryInListSpy.count(), 3); 1685 1686 QCOMPARE(dataChangedSpy.wait(), true); 1687 1688 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1689 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1690 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1691 QCOMPARE(rowsRemovedSpy.count(), 0); 1692 QCOMPARE(rowsMovedSpy.count(), 0); 1693 QCOMPARE(rowsInsertedSpy.count(), 3); 1694 QCOMPARE(dataChangedSpy.count(), 3); 1695 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1696 QCOMPARE(newEntryInListSpy.count(), 3); 1697 1698 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 1699 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1700 1701 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1702 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1703 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1704 QCOMPARE(rowsRemovedSpy.count(), 0); 1705 QCOMPARE(rowsMovedSpy.count(), 0); 1706 QCOMPARE(rowsInsertedSpy.count(), 4); 1707 QCOMPARE(dataChangedSpy.count(), 3); 1708 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1709 QCOMPARE(newEntryInListSpy.count(), 4); 1710 1711 QCOMPARE(dataChangedSpy.wait(), true); 1712 1713 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1714 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1715 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1716 QCOMPARE(rowsRemovedSpy.count(), 0); 1717 QCOMPARE(rowsMovedSpy.count(), 0); 1718 QCOMPARE(rowsInsertedSpy.count(), 4); 1719 QCOMPARE(dataChangedSpy.count(), 4); 1720 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1721 QCOMPARE(newEntryInListSpy.count(), 4); 1722 1723 myPlayList.removeRows(2, 1); 1724 1725 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 1); 1726 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1727 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1728 QCOMPARE(rowsRemovedSpy.count(), 1); 1729 QCOMPARE(rowsMovedSpy.count(), 0); 1730 QCOMPARE(rowsInsertedSpy.count(), 4); 1731 QCOMPARE(dataChangedSpy.count(), 4); 1732 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1733 QCOMPARE(newEntryInListSpy.count(), 4); 1734 1735 myPlayList.removeRows(0, 1); 1736 1737 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 2); 1738 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1739 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1740 QCOMPARE(rowsRemovedSpy.count(), 2); 1741 QCOMPARE(rowsMovedSpy.count(), 0); 1742 QCOMPARE(rowsInsertedSpy.count(), 4); 1743 QCOMPARE(dataChangedSpy.count(), 4); 1744 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1745 QCOMPARE(newEntryInListSpy.count(), 4); 1746 } 1747 1748 void MediaPlayListTest::testHasHeaderWithRestore() 1749 { 1750 MediaPlayList myPlayList; 1751 QAbstractItemModelTester testModel(&myPlayList); 1752 DatabaseInterface myDatabaseContent; 1753 TracksListener myListener(&myDatabaseContent); 1754 1755 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1756 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1757 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1758 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1759 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1760 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1761 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1762 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1763 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1764 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1765 1766 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1767 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1768 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1769 QCOMPARE(rowsRemovedSpy.count(), 0); 1770 QCOMPARE(rowsMovedSpy.count(), 0); 1771 QCOMPARE(rowsInsertedSpy.count(), 0); 1772 QCOMPARE(dataChangedSpy.count(), 0); 1773 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1774 QCOMPARE(newEntryInListSpy.count(), 0); 1775 1776 myDatabaseContent.init(QStringLiteral("testDbDirectContentHeaderWithRestore")); 1777 1778 connect(&myListener, &TracksListener::trackHasChanged, 1779 &myPlayList, &MediaPlayList::trackChanged, 1780 Qt::QueuedConnection); 1781 connect(&myListener, &TracksListener::tracksListAdded, 1782 &myPlayList, &MediaPlayList::tracksListAdded, 1783 Qt::QueuedConnection); 1784 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1785 &myListener, &TracksListener::trackByNameInList, 1786 Qt::QueuedConnection); 1787 connect(&myPlayList, &MediaPlayList::newEntryInList, 1788 &myListener, &TracksListener::newEntryInList, 1789 Qt::QueuedConnection); 1790 connect(&myPlayList, &MediaPlayList::newUrlInList, 1791 &myListener, &TracksListener::newUrlInList, 1792 Qt::QueuedConnection); 1793 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1794 &myListener, &TracksListener::tracksAdded); 1795 1796 myPlayList.enqueueRestoredEntries( 1797 QVariantList({QStringList({{},QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), QStringLiteral("1"), QStringLiteral("1"),{}}), 1798 QStringList({{},QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album1"), QStringLiteral("1"), QStringLiteral("1"),{}}), 1799 QStringList({{},QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), QStringLiteral("2"), QStringLiteral("1"),{}}), 1800 QStringList({{},QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), QStringLiteral("3"), QStringLiteral("1"),{}}) 1801 })); 1802 1803 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1804 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1805 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1806 QCOMPARE(rowsRemovedSpy.count(), 0); 1807 QCOMPARE(rowsMovedSpy.count(), 0); 1808 QCOMPARE(rowsInsertedSpy.count(), 1); 1809 QCOMPARE(dataChangedSpy.count(), 0); 1810 QCOMPARE(newTrackByNameInListSpy.count(), 4); 1811 QCOMPARE(newEntryInListSpy.count(), 0); 1812 1813 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1814 1815 while (dataChangedSpy.count() < 4) { 1816 QCOMPARE(dataChangedSpy.wait(), true); 1817 } 1818 1819 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1820 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1821 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1822 QCOMPARE(rowsRemovedSpy.count(), 0); 1823 QCOMPARE(rowsMovedSpy.count(), 0); 1824 QCOMPARE(rowsInsertedSpy.count(), 1); 1825 QCOMPARE(dataChangedSpy.count(), 4); 1826 QCOMPARE(newTrackByNameInListSpy.count(), 4); 1827 QCOMPARE(newEntryInListSpy.count(), 0); 1828 1829 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 1830 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 1831 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 1832 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 1833 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 1834 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 5); 1835 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track1")); 1836 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 1837 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 1838 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 1839 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 1840 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1); 1841 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track2")); 1842 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 1843 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 1844 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TrackNumberRole).toInt(), 2); 1845 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 1846 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 6); 1847 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 1848 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album2")); 1849 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist1")); 1850 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 1851 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 1852 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 7); 1853 } 1854 1855 void MediaPlayListTest::testHasHeaderMoveFirst() 1856 { 1857 MediaPlayList myPlayList; 1858 QAbstractItemModelTester testModel(&myPlayList); 1859 1860 DatabaseInterface myDatabaseContent; 1861 TracksListener myListener(&myDatabaseContent); 1862 1863 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 1864 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 1865 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 1866 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 1867 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 1868 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 1869 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 1870 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 1871 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 1872 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 1873 1874 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1875 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1876 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1877 QCOMPARE(rowsRemovedSpy.count(), 0); 1878 QCOMPARE(rowsMovedSpy.count(), 0); 1879 QCOMPARE(rowsInsertedSpy.count(), 0); 1880 QCOMPARE(dataChangedSpy.count(), 0); 1881 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1882 QCOMPARE(newEntryInListSpy.count(), 0); 1883 1884 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 1885 1886 connect(&myListener, &TracksListener::trackHasChanged, 1887 &myPlayList, &MediaPlayList::trackChanged, 1888 Qt::QueuedConnection); 1889 connect(&myListener, &TracksListener::tracksListAdded, 1890 &myPlayList, &MediaPlayList::tracksListAdded, 1891 Qt::QueuedConnection); 1892 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 1893 &myListener, &TracksListener::trackByNameInList, 1894 Qt::QueuedConnection); 1895 connect(&myPlayList, &MediaPlayList::newEntryInList, 1896 &myListener, &TracksListener::newEntryInList, 1897 Qt::QueuedConnection); 1898 connect(&myPlayList, &MediaPlayList::newUrlInList, 1899 &myListener, &TracksListener::newUrlInList, 1900 Qt::QueuedConnection); 1901 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 1902 &myListener, &TracksListener::tracksAdded); 1903 1904 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 1905 1906 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1907 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1908 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 1909 QCOMPARE(rowsRemovedSpy.count(), 0); 1910 QCOMPARE(rowsMovedSpy.count(), 0); 1911 QCOMPARE(rowsInsertedSpy.count(), 0); 1912 QCOMPARE(dataChangedSpy.count(), 0); 1913 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1914 QCOMPARE(newEntryInListSpy.count(), 0); 1915 1916 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 1917 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1918 1919 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1920 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1921 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1922 QCOMPARE(rowsRemovedSpy.count(), 0); 1923 QCOMPARE(rowsMovedSpy.count(), 0); 1924 QCOMPARE(rowsInsertedSpy.count(), 1); 1925 QCOMPARE(dataChangedSpy.count(), 0); 1926 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1927 QCOMPARE(newEntryInListSpy.count(), 1); 1928 1929 QCOMPARE(dataChangedSpy.wait(), true); 1930 1931 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1932 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1933 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 1934 QCOMPARE(rowsRemovedSpy.count(), 0); 1935 QCOMPARE(rowsMovedSpy.count(), 0); 1936 QCOMPARE(rowsInsertedSpy.count(), 1); 1937 QCOMPARE(dataChangedSpy.count(), 1); 1938 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1939 QCOMPARE(newEntryInListSpy.count(), 1); 1940 1941 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 1942 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1943 1944 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1945 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1946 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1947 QCOMPARE(rowsRemovedSpy.count(), 0); 1948 QCOMPARE(rowsMovedSpy.count(), 0); 1949 QCOMPARE(rowsInsertedSpy.count(), 2); 1950 QCOMPARE(dataChangedSpy.count(), 1); 1951 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1952 QCOMPARE(newEntryInListSpy.count(), 2); 1953 1954 QCOMPARE(dataChangedSpy.wait(), true); 1955 1956 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1957 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1958 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 1959 QCOMPARE(rowsRemovedSpy.count(), 0); 1960 QCOMPARE(rowsMovedSpy.count(), 0); 1961 QCOMPARE(rowsInsertedSpy.count(), 2); 1962 QCOMPARE(dataChangedSpy.count(), 2); 1963 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1964 QCOMPARE(newEntryInListSpy.count(), 2); 1965 1966 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 1967 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1968 1969 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1970 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1971 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1972 QCOMPARE(rowsRemovedSpy.count(), 0); 1973 QCOMPARE(rowsMovedSpy.count(), 0); 1974 QCOMPARE(rowsInsertedSpy.count(), 3); 1975 QCOMPARE(dataChangedSpy.count(), 2); 1976 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1977 QCOMPARE(newEntryInListSpy.count(), 3); 1978 1979 QCOMPARE(dataChangedSpy.wait(), true); 1980 1981 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1982 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1983 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 1984 QCOMPARE(rowsRemovedSpy.count(), 0); 1985 QCOMPARE(rowsMovedSpy.count(), 0); 1986 QCOMPARE(rowsInsertedSpy.count(), 3); 1987 QCOMPARE(dataChangedSpy.count(), 3); 1988 QCOMPARE(newTrackByNameInListSpy.count(), 0); 1989 QCOMPARE(newEntryInListSpy.count(), 3); 1990 1991 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track4"), QStringLiteral("artist1"), QStringLiteral("album2"), 4, 1); 1992 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 1993 1994 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 1995 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 1996 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 1997 QCOMPARE(rowsRemovedSpy.count(), 0); 1998 QCOMPARE(rowsMovedSpy.count(), 0); 1999 QCOMPARE(rowsInsertedSpy.count(), 4); 2000 QCOMPARE(dataChangedSpy.count(), 3); 2001 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2002 QCOMPARE(newEntryInListSpy.count(), 4); 2003 2004 QCOMPARE(dataChangedSpy.wait(), true); 2005 2006 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2007 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2008 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2009 QCOMPARE(rowsRemovedSpy.count(), 0); 2010 QCOMPARE(rowsMovedSpy.count(), 0); 2011 QCOMPARE(rowsInsertedSpy.count(), 4); 2012 QCOMPARE(dataChangedSpy.count(), 4); 2013 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2014 QCOMPARE(newEntryInListSpy.count(), 4); 2015 2016 myPlayList.moveRows({}, 0, 1, {}, 3); 2017 2018 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2019 QCOMPARE(rowsAboutToBeMovedSpy.count(), 1); 2020 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2021 QCOMPARE(rowsRemovedSpy.count(), 0); 2022 QCOMPARE(rowsMovedSpy.count(), 1); 2023 QCOMPARE(rowsInsertedSpy.count(), 4); 2024 QCOMPARE(dataChangedSpy.count(), 4); 2025 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2026 QCOMPARE(newEntryInListSpy.count(), 4); 2027 } 2028 2029 void MediaPlayListTest::testHasHeaderMoveAnother() 2030 { 2031 MediaPlayList myPlayList; 2032 QAbstractItemModelTester testModel(&myPlayList); 2033 DatabaseInterface myDatabaseContent; 2034 TracksListener myListener(&myDatabaseContent); 2035 2036 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2037 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2038 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2039 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2040 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2041 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2042 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2043 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2044 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2045 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2046 2047 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2048 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2049 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2050 QCOMPARE(rowsRemovedSpy.count(), 0); 2051 QCOMPARE(rowsMovedSpy.count(), 0); 2052 QCOMPARE(rowsInsertedSpy.count(), 0); 2053 QCOMPARE(dataChangedSpy.count(), 0); 2054 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2055 QCOMPARE(newEntryInListSpy.count(), 0); 2056 2057 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 2058 2059 connect(&myListener, &TracksListener::trackHasChanged, 2060 &myPlayList, &MediaPlayList::trackChanged, 2061 Qt::QueuedConnection); 2062 connect(&myListener, &TracksListener::tracksListAdded, 2063 &myPlayList, &MediaPlayList::tracksListAdded, 2064 Qt::QueuedConnection); 2065 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2066 &myListener, &TracksListener::trackByNameInList, 2067 Qt::QueuedConnection); 2068 connect(&myPlayList, &MediaPlayList::newEntryInList, 2069 &myListener, &TracksListener::newEntryInList, 2070 Qt::QueuedConnection); 2071 connect(&myPlayList, &MediaPlayList::newUrlInList, 2072 &myListener, &TracksListener::newUrlInList, 2073 Qt::QueuedConnection); 2074 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2075 &myListener, &TracksListener::tracksAdded); 2076 2077 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2078 2079 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2080 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2081 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2082 QCOMPARE(rowsRemovedSpy.count(), 0); 2083 QCOMPARE(rowsMovedSpy.count(), 0); 2084 QCOMPARE(rowsInsertedSpy.count(), 0); 2085 QCOMPARE(dataChangedSpy.count(), 0); 2086 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2087 QCOMPARE(newEntryInListSpy.count(), 0); 2088 2089 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 2090 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2091 2092 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2093 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2094 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2095 QCOMPARE(rowsRemovedSpy.count(), 0); 2096 QCOMPARE(rowsMovedSpy.count(), 0); 2097 QCOMPARE(rowsInsertedSpy.count(), 1); 2098 QCOMPARE(dataChangedSpy.count(), 0); 2099 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2100 QCOMPARE(newEntryInListSpy.count(), 1); 2101 2102 QCOMPARE(dataChangedSpy.wait(), true); 2103 2104 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2105 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2106 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2107 QCOMPARE(rowsRemovedSpy.count(), 0); 2108 QCOMPARE(rowsMovedSpy.count(), 0); 2109 QCOMPARE(rowsInsertedSpy.count(), 1); 2110 QCOMPARE(dataChangedSpy.count(), 1); 2111 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2112 QCOMPARE(newEntryInListSpy.count(), 1); 2113 2114 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 2115 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2116 2117 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2118 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2119 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2120 QCOMPARE(rowsRemovedSpy.count(), 0); 2121 QCOMPARE(rowsMovedSpy.count(), 0); 2122 QCOMPARE(rowsInsertedSpy.count(), 2); 2123 QCOMPARE(dataChangedSpy.count(), 1); 2124 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2125 QCOMPARE(newEntryInListSpy.count(), 2); 2126 2127 QCOMPARE(dataChangedSpy.wait(), true); 2128 2129 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2130 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2131 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2132 QCOMPARE(rowsRemovedSpy.count(), 0); 2133 QCOMPARE(rowsMovedSpy.count(), 0); 2134 QCOMPARE(rowsInsertedSpy.count(), 2); 2135 QCOMPARE(dataChangedSpy.count(), 2); 2136 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2137 QCOMPARE(newEntryInListSpy.count(), 2); 2138 2139 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 2140 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2141 2142 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2143 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2144 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2145 QCOMPARE(rowsRemovedSpy.count(), 0); 2146 QCOMPARE(rowsMovedSpy.count(), 0); 2147 QCOMPARE(rowsInsertedSpy.count(), 3); 2148 QCOMPARE(dataChangedSpy.count(), 2); 2149 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2150 QCOMPARE(newEntryInListSpy.count(), 3); 2151 2152 QCOMPARE(dataChangedSpy.wait(), true); 2153 2154 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2155 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2156 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2157 QCOMPARE(rowsRemovedSpy.count(), 0); 2158 QCOMPARE(rowsMovedSpy.count(), 0); 2159 QCOMPARE(rowsInsertedSpy.count(), 3); 2160 QCOMPARE(dataChangedSpy.count(), 3); 2161 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2162 QCOMPARE(newEntryInListSpy.count(), 3); 2163 2164 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track4"), QStringLiteral("artist1"), QStringLiteral("album2"), 4, 1); 2165 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2166 2167 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2168 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2169 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2170 QCOMPARE(rowsRemovedSpy.count(), 0); 2171 QCOMPARE(rowsMovedSpy.count(), 0); 2172 QCOMPARE(rowsInsertedSpy.count(), 4); 2173 QCOMPARE(dataChangedSpy.count(), 3); 2174 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2175 QCOMPARE(newEntryInListSpy.count(), 4); 2176 2177 QCOMPARE(dataChangedSpy.wait(), true); 2178 2179 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2180 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2181 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2182 QCOMPARE(rowsRemovedSpy.count(), 0); 2183 QCOMPARE(rowsMovedSpy.count(), 0); 2184 QCOMPARE(rowsInsertedSpy.count(), 4); 2185 QCOMPARE(dataChangedSpy.count(), 4); 2186 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2187 QCOMPARE(newEntryInListSpy.count(), 4); 2188 2189 myPlayList.moveRows({}, 3, 1, {}, 0); 2190 2191 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2192 QCOMPARE(rowsAboutToBeMovedSpy.count(), 1); 2193 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2194 QCOMPARE(rowsRemovedSpy.count(), 0); 2195 QCOMPARE(rowsMovedSpy.count(), 1); 2196 QCOMPARE(rowsInsertedSpy.count(), 4); 2197 QCOMPARE(dataChangedSpy.count(), 4); 2198 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2199 QCOMPARE(newEntryInListSpy.count(), 4); 2200 } 2201 2202 void MediaPlayListTest::restoreMultipleIdenticalTracks() 2203 { 2204 MediaPlayList myPlayList; 2205 QAbstractItemModelTester testModel(&myPlayList); 2206 DatabaseInterface myDatabaseContent; 2207 TracksListener myListener(&myDatabaseContent); 2208 2209 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2210 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2211 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2212 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2213 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2214 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2215 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2216 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2217 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2218 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2219 2220 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2221 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2222 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2223 QCOMPARE(rowsRemovedSpy.count(), 0); 2224 QCOMPARE(rowsMovedSpy.count(), 0); 2225 QCOMPARE(rowsInsertedSpy.count(), 0); 2226 QCOMPARE(dataChangedSpy.count(), 0); 2227 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2228 QCOMPARE(newEntryInListSpy.count(), 0); 2229 2230 myDatabaseContent.init(QStringLiteral("testDbDirectContentHeaderWithRestore")); 2231 2232 connect(&myListener, &TracksListener::trackHasChanged, 2233 &myPlayList, &MediaPlayList::trackChanged, 2234 Qt::QueuedConnection); 2235 connect(&myListener, &TracksListener::tracksListAdded, 2236 &myPlayList, &MediaPlayList::tracksListAdded, 2237 Qt::QueuedConnection); 2238 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2239 &myListener, &TracksListener::trackByNameInList, 2240 Qt::QueuedConnection); 2241 connect(&myPlayList, &MediaPlayList::newEntryInList, 2242 &myListener, &TracksListener::newEntryInList, 2243 Qt::QueuedConnection); 2244 connect(&myPlayList, &MediaPlayList::newUrlInList, 2245 &myListener, &TracksListener::newUrlInList, 2246 Qt::QueuedConnection); 2247 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2248 &myListener, &TracksListener::tracksAdded); 2249 2250 myPlayList.enqueueRestoredEntries( 2251 QVariantList({QStringList({{},QStringLiteral("track3"), QStringLiteral("artist3"), QStringLiteral("album1"), QStringLiteral("3"), QStringLiteral("3"),{}}), 2252 QStringList({{},QStringLiteral("track3"), QStringLiteral("artist3"), QStringLiteral("album1"), QStringLiteral("3"), QStringLiteral("3"),{}}), 2253 QStringList({{},QStringLiteral("track3"), QStringLiteral("artist3"), QStringLiteral("album1"), QStringLiteral("3"), QStringLiteral("3"),{}}), 2254 QStringList({{},QStringLiteral("track3"), QStringLiteral("artist3"), QStringLiteral("album1"), QStringLiteral("3"), QStringLiteral("3"),{}}) 2255 })); 2256 2257 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2258 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2259 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2260 QCOMPARE(rowsRemovedSpy.count(), 0); 2261 QCOMPARE(rowsMovedSpy.count(), 0); 2262 QCOMPARE(rowsInsertedSpy.count(), 1); 2263 QCOMPARE(dataChangedSpy.count(), 0); 2264 QCOMPARE(newTrackByNameInListSpy.count(), 4); 2265 QCOMPARE(newEntryInListSpy.count(), 0); 2266 2267 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2268 2269 QCOMPARE(dataChangedSpy.wait(), true); 2270 2271 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2272 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2273 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2274 QCOMPARE(rowsRemovedSpy.count(), 0); 2275 QCOMPARE(rowsMovedSpy.count(), 0); 2276 QCOMPARE(rowsInsertedSpy.count(), 1); 2277 QCOMPARE(dataChangedSpy.count(), 4); 2278 QCOMPARE(newTrackByNameInListSpy.count(), 4); 2279 QCOMPARE(newEntryInListSpy.count(), 0); 2280 2281 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 2282 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 2283 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist3")); 2284 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 2285 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 3); 2286 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 3); 2287 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 2288 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 2289 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist3")); 2290 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 2291 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DiscNumberRole).toInt(), 3); 2292 QCOMPARE(myPlayList.data(myPlayList.index(1, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 3); 2293 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 2294 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 2295 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist3")); 2296 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 2297 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DiscNumberRole).toInt(), 3); 2298 QCOMPARE(myPlayList.data(myPlayList.index(2, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 3); 2299 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track3")); 2300 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("album1")); 2301 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist3")); 2302 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::TrackNumberRole).toInt(), 3); 2303 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DiscNumberRole).toInt(), 3); 2304 QCOMPARE(myPlayList.data(myPlayList.index(3, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 3); 2305 } 2306 2307 void MediaPlayListTest::restoreTrackWithoutAlbum() 2308 { 2309 QTemporaryFile databaseFile; 2310 databaseFile.open(); 2311 2312 qDebug() << "restoreTrackWithoutAlbum" << databaseFile.fileName(); 2313 2314 MediaPlayList myPlayList; 2315 QAbstractItemModelTester testModel(&myPlayList); 2316 DatabaseInterface myDatabaseContent; 2317 TracksListener myListener(&myDatabaseContent); 2318 2319 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2320 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2321 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2322 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2323 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2324 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2325 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2326 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2327 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2328 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2329 2330 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2331 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2332 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2333 QCOMPARE(rowsRemovedSpy.count(), 0); 2334 QCOMPARE(rowsMovedSpy.count(), 0); 2335 QCOMPARE(rowsInsertedSpy.count(), 0); 2336 QCOMPARE(dataChangedSpy.count(), 0); 2337 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2338 QCOMPARE(newEntryInListSpy.count(), 0); 2339 2340 myDatabaseContent.init(QStringLiteral("restoreTrackWithoutAlbum"), databaseFile.fileName()); 2341 2342 connect(&myListener, &TracksListener::trackHasChanged, 2343 &myPlayList, &MediaPlayList::trackChanged, 2344 Qt::QueuedConnection); 2345 connect(&myListener, &TracksListener::tracksListAdded, 2346 &myPlayList, &MediaPlayList::tracksListAdded, 2347 Qt::QueuedConnection); 2348 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2349 &myListener, &TracksListener::trackByNameInList, 2350 Qt::QueuedConnection); 2351 connect(&myPlayList, &MediaPlayList::newEntryInList, 2352 &myListener, &TracksListener::newEntryInList, 2353 Qt::QueuedConnection); 2354 connect(&myPlayList, &MediaPlayList::newUrlInList, 2355 &myListener, &TracksListener::newUrlInList, 2356 Qt::QueuedConnection); 2357 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2358 &myListener, &TracksListener::tracksAdded); 2359 2360 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2361 2362 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2363 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2364 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2365 QCOMPARE(rowsRemovedSpy.count(), 0); 2366 QCOMPARE(rowsMovedSpy.count(), 0); 2367 QCOMPARE(rowsInsertedSpy.count(), 0); 2368 QCOMPARE(dataChangedSpy.count(), 0); 2369 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2370 QCOMPARE(newEntryInListSpy.count(), 0); 2371 2372 auto newTrack = DataTypes::TrackDataType{}; 2373 2374 newTrack[DataTypes::IdRole] = QStringLiteral("$29"); 2375 newTrack[DataTypes::ParentIdRole] = QStringLiteral("0"); 2376 newTrack[DataTypes::TitleRole] = QStringLiteral("track19"); 2377 newTrack[DataTypes::ArtistRole] = QStringLiteral("artist2"); 2378 newTrack[DataTypes::DurationRole] = QTime::fromMSecsSinceStartOfDay(29); 2379 newTrack[DataTypes::ResourceRole] = QUrl::fromLocalFile(QStringLiteral("/$29")); 2380 newTrack[DataTypes::FileModificationTime] = QDateTime::fromMSecsSinceEpoch(29); 2381 newTrack[DataTypes::ImageUrlRole] = QUrl::fromLocalFile(QStringLiteral("withoutAlbum")); 2382 newTrack[DataTypes::RatingRole] = 9; 2383 newTrack[DataTypes::IsSingleDiscAlbumRole] = true; 2384 newTrack[DataTypes::GenreRole] = QStringLiteral("genre1"); 2385 newTrack[DataTypes::ComposerRole] = QStringLiteral("composer1"); 2386 newTrack[DataTypes::LyricistRole] = QStringLiteral("lyricist1"); 2387 newTrack[DataTypes::HasEmbeddedCover] = false; 2388 newTrack[DataTypes::ElementTypeRole] = ElisaUtils::Track; 2389 2390 myDatabaseContent.insertTracksList({newTrack}, mNewCovers); 2391 2392 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2393 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2394 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2395 QCOMPARE(rowsRemovedSpy.count(), 0); 2396 QCOMPARE(rowsMovedSpy.count(), 0); 2397 QCOMPARE(rowsInsertedSpy.count(), 0); 2398 QCOMPARE(dataChangedSpy.count(), 0); 2399 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2400 QCOMPARE(newEntryInListSpy.count(), 0); 2401 2402 myPlayList.enqueueRestoredEntries(QVariantList({QStringList({QStringLiteral("0"), QStringLiteral("track19"), QStringLiteral("artist2"), {}, {}, {}, QString::number(ElisaUtils::PlayListEntryType::Unknown)})})); 2403 2404 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2405 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2406 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2407 QCOMPARE(rowsRemovedSpy.count(), 0); 2408 QCOMPARE(rowsMovedSpy.count(), 0); 2409 QCOMPARE(rowsInsertedSpy.count(), 1); 2410 QCOMPARE(dataChangedSpy.count(), 0); 2411 QCOMPARE(newTrackByNameInListSpy.count(), 1); 2412 QCOMPARE(newEntryInListSpy.count(), 0); 2413 2414 QCOMPARE(dataChangedSpy.wait(), true); 2415 2416 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2417 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2418 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2419 QCOMPARE(rowsRemovedSpy.count(), 0); 2420 QCOMPARE(rowsMovedSpy.count(), 0); 2421 QCOMPARE(rowsInsertedSpy.count(), 1); 2422 QCOMPARE(dataChangedSpy.count(), 1); 2423 QCOMPARE(newTrackByNameInListSpy.count(), 1); 2424 QCOMPARE(newEntryInListSpy.count(), 0); 2425 2426 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("track19")); 2427 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QString()); 2428 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("artist2")); 2429 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 0); 2430 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 0); 2431 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 29); 2432 } 2433 2434 void MediaPlayListTest::restoreLocalTrack() 2435 { 2436 QTemporaryFile databaseFile; 2437 databaseFile.open(); 2438 2439 qDebug() << "restoreLocalTrack" << databaseFile.fileName(); 2440 2441 MediaPlayList myPlayList; 2442 QAbstractItemModelTester testModel(&myPlayList); 2443 DatabaseInterface myDatabaseContent; 2444 TracksListener myListener(&myDatabaseContent); 2445 2446 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2447 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2448 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2449 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2450 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2451 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2452 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2453 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2454 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2455 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2456 2457 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2458 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2459 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2460 QCOMPARE(rowsRemovedSpy.count(), 0); 2461 QCOMPARE(rowsMovedSpy.count(), 0); 2462 QCOMPARE(rowsInsertedSpy.count(), 0); 2463 QCOMPARE(dataChangedSpy.count(), 0); 2464 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2465 QCOMPARE(newEntryInListSpy.count(), 0); 2466 2467 myDatabaseContent.init(QStringLiteral("restoreTrackWithoutAlbum"), databaseFile.fileName()); 2468 2469 connect(&myListener, &TracksListener::trackHasChanged, 2470 &myPlayList, &MediaPlayList::trackChanged, 2471 Qt::QueuedConnection); 2472 connect(&myListener, &TracksListener::tracksListAdded, 2473 &myPlayList, &MediaPlayList::tracksListAdded, 2474 Qt::QueuedConnection); 2475 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2476 &myListener, &TracksListener::trackByNameInList, 2477 Qt::QueuedConnection); 2478 connect(&myPlayList, &MediaPlayList::newEntryInList, 2479 &myListener, &TracksListener::newEntryInList, 2480 Qt::QueuedConnection); 2481 connect(&myPlayList, &MediaPlayList::newUrlInList, 2482 &myListener, &TracksListener::newUrlInList, 2483 Qt::QueuedConnection); 2484 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2485 &myListener, &TracksListener::tracksAdded); 2486 2487 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2488 2489 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2490 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2491 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2492 QCOMPARE(rowsRemovedSpy.count(), 0); 2493 QCOMPARE(rowsMovedSpy.count(), 0); 2494 QCOMPARE(rowsInsertedSpy.count(), 0); 2495 QCOMPARE(dataChangedSpy.count(), 0); 2496 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2497 QCOMPARE(newEntryInListSpy.count(), 0); 2498 2499 myPlayList.enqueueRestoredEntries(QVariantList({QStringList({{}, 2500 QStringLiteral("Title"), 2501 QStringLiteral("Artist"), 2502 QStringLiteral("Test"), 2503 {}, 2504 {}, 2505 QString::number(ElisaUtils::PlayListEntryType::Unknown), 2506 QUrl::fromLocalFile(QStringLiteral(MEDIAPLAYLIST_TESTS_SAMPLE_FILES_PATH) + QStringLiteral("/test.ogg")).toString()})})); 2507 2508 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2509 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2510 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2511 QCOMPARE(rowsRemovedSpy.count(), 0); 2512 QCOMPARE(rowsMovedSpy.count(), 0); 2513 QCOMPARE(rowsInsertedSpy.count(), 1); 2514 QCOMPARE(dataChangedSpy.count(), 0); 2515 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2516 QCOMPARE(newEntryInListSpy.count(), 1); 2517 2518 QCOMPARE(dataChangedSpy.wait(), true); 2519 2520 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2521 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2522 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2523 QCOMPARE(rowsRemovedSpy.count(), 0); 2524 QCOMPARE(rowsMovedSpy.count(), 0); 2525 QCOMPARE(rowsInsertedSpy.count(), 1); 2526 QCOMPARE(dataChangedSpy.count(), 1); 2527 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2528 QCOMPARE(newEntryInListSpy.count(), 1); 2529 2530 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TitleRole).toString(), QStringLiteral("Title")); 2531 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::AlbumRole).toString(), QStringLiteral("Test")); 2532 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::ArtistRole).toString(), QStringLiteral("Artist")); 2533 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::TrackNumberRole).toInt(), 1); 2534 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DiscNumberRole).toInt(), 1); 2535 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::DurationRole).toTime().msecsSinceStartOfDay(), 1000); 2536 QCOMPARE(myPlayList.data(myPlayList.index(0, 0), MediaPlayList::IsValidRole).toBool(), true); 2537 } 2538 2539 void MediaPlayListTest::testHasHeaderAlbumWithSameTitle() 2540 { 2541 MediaPlayList myPlayList; 2542 QAbstractItemModelTester testModel(&myPlayList); 2543 DatabaseInterface myDatabaseContent; 2544 TracksListener myListener(&myDatabaseContent); 2545 2546 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2547 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2548 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2549 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2550 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2551 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2552 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2553 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2554 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2555 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2556 2557 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2558 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2559 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2560 QCOMPARE(rowsRemovedSpy.count(), 0); 2561 QCOMPARE(rowsMovedSpy.count(), 0); 2562 QCOMPARE(rowsInsertedSpy.count(), 0); 2563 QCOMPARE(dataChangedSpy.count(), 0); 2564 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2565 QCOMPARE(newEntryInListSpy.count(), 0); 2566 2567 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 2568 2569 connect(&myListener, &TracksListener::trackHasChanged, 2570 &myPlayList, &MediaPlayList::trackChanged, 2571 Qt::QueuedConnection); 2572 connect(&myListener, &TracksListener::tracksListAdded, 2573 &myPlayList, &MediaPlayList::tracksListAdded, 2574 Qt::QueuedConnection); 2575 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2576 &myListener, &TracksListener::trackByNameInList, 2577 Qt::QueuedConnection); 2578 connect(&myPlayList, &MediaPlayList::newEntryInList, 2579 &myListener, &TracksListener::newEntryInList, 2580 Qt::QueuedConnection); 2581 connect(&myPlayList, &MediaPlayList::newUrlInList, 2582 &myListener, &TracksListener::newUrlInList, 2583 Qt::QueuedConnection); 2584 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2585 &myListener, &TracksListener::tracksAdded); 2586 2587 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2588 2589 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2590 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2591 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2592 QCOMPARE(rowsRemovedSpy.count(), 0); 2593 QCOMPARE(rowsMovedSpy.count(), 0); 2594 QCOMPARE(rowsInsertedSpy.count(), 0); 2595 QCOMPARE(dataChangedSpy.count(), 0); 2596 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2597 QCOMPARE(newEntryInListSpy.count(), 0); 2598 2599 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist2"), 2600 QStringLiteral("album3"), 1, 1); 2601 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2602 2603 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2604 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2605 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2606 QCOMPARE(rowsRemovedSpy.count(), 0); 2607 QCOMPARE(rowsMovedSpy.count(), 0); 2608 QCOMPARE(rowsInsertedSpy.count(), 1); 2609 QCOMPARE(dataChangedSpy.count(), 0); 2610 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2611 QCOMPARE(newEntryInListSpy.count(), 1); 2612 2613 QCOMPARE(dataChangedSpy.wait(), true); 2614 2615 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2616 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2617 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2618 QCOMPARE(rowsRemovedSpy.count(), 0); 2619 QCOMPARE(rowsMovedSpy.count(), 0); 2620 QCOMPARE(rowsInsertedSpy.count(), 1); 2621 QCOMPARE(dataChangedSpy.count(), 1); 2622 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2623 QCOMPARE(newEntryInListSpy.count(), 1); 2624 2625 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), 2626 QStringLiteral("album1"), 1, 1); 2627 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2628 2629 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2630 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2631 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2632 QCOMPARE(rowsRemovedSpy.count(), 0); 2633 QCOMPARE(rowsMovedSpy.count(), 0); 2634 QCOMPARE(rowsInsertedSpy.count(), 2); 2635 QCOMPARE(dataChangedSpy.count(), 1); 2636 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2637 QCOMPARE(newEntryInListSpy.count(), 2); 2638 2639 QCOMPARE(dataChangedSpy.wait(), true); 2640 2641 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2642 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2643 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2644 QCOMPARE(rowsRemovedSpy.count(), 0); 2645 QCOMPARE(rowsMovedSpy.count(), 0); 2646 QCOMPARE(rowsInsertedSpy.count(), 2); 2647 QCOMPARE(dataChangedSpy.count(), 2); 2648 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2649 QCOMPARE(newEntryInListSpy.count(), 2); 2650 2651 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist2"), 2652 QStringLiteral("album3"), 2, 1); 2653 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2654 2655 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2656 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2657 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2658 QCOMPARE(rowsRemovedSpy.count(), 0); 2659 QCOMPARE(rowsMovedSpy.count(), 0); 2660 QCOMPARE(rowsInsertedSpy.count(), 3); 2661 QCOMPARE(dataChangedSpy.count(), 2); 2662 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2663 QCOMPARE(newEntryInListSpy.count(), 3); 2664 2665 QCOMPARE(dataChangedSpy.wait(), true); 2666 2667 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2668 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2669 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2670 QCOMPARE(rowsRemovedSpy.count(), 0); 2671 QCOMPARE(rowsMovedSpy.count(), 0); 2672 QCOMPARE(rowsInsertedSpy.count(), 3); 2673 QCOMPARE(dataChangedSpy.count(), 3); 2674 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2675 QCOMPARE(newEntryInListSpy.count(), 3); 2676 2677 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist2"), 2678 QStringLiteral("album3"), 3, 1); 2679 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2680 2681 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2682 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2683 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2684 QCOMPARE(rowsRemovedSpy.count(), 0); 2685 QCOMPARE(rowsMovedSpy.count(), 0); 2686 QCOMPARE(rowsInsertedSpy.count(), 4); 2687 QCOMPARE(dataChangedSpy.count(), 3); 2688 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2689 QCOMPARE(newEntryInListSpy.count(), 4); 2690 2691 QCOMPARE(dataChangedSpy.wait(), true); 2692 2693 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2694 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2695 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2696 QCOMPARE(rowsRemovedSpy.count(), 0); 2697 QCOMPARE(rowsMovedSpy.count(), 0); 2698 QCOMPARE(rowsInsertedSpy.count(), 4); 2699 QCOMPARE(dataChangedSpy.count(), 4); 2700 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2701 QCOMPARE(newEntryInListSpy.count(), 4); 2702 2703 auto fithTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track9"), QStringLiteral("artist2"), 2704 QStringLiteral("album3"), 9, 1); 2705 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fithTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2706 2707 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2708 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2709 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 5); 2710 QCOMPARE(rowsRemovedSpy.count(), 0); 2711 QCOMPARE(rowsMovedSpy.count(), 0); 2712 QCOMPARE(rowsInsertedSpy.count(), 5); 2713 QCOMPARE(dataChangedSpy.count(), 4); 2714 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2715 QCOMPARE(newEntryInListSpy.count(), 5); 2716 2717 QCOMPARE(dataChangedSpy.wait(), true); 2718 2719 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2720 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2721 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 5); 2722 QCOMPARE(rowsRemovedSpy.count(), 0); 2723 QCOMPARE(rowsMovedSpy.count(), 0); 2724 QCOMPARE(rowsInsertedSpy.count(), 5); 2725 QCOMPARE(dataChangedSpy.count(), 5); 2726 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2727 QCOMPARE(newEntryInListSpy.count(), 5); 2728 2729 auto sixthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist7"), 2730 QStringLiteral("album3"), 1, 1); 2731 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, sixthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2732 2733 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2734 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2735 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); 2736 QCOMPARE(rowsRemovedSpy.count(), 0); 2737 QCOMPARE(rowsMovedSpy.count(), 0); 2738 QCOMPARE(rowsInsertedSpy.count(), 6); 2739 QCOMPARE(dataChangedSpy.count(), 5); 2740 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2741 QCOMPARE(newEntryInListSpy.count(), 6); 2742 2743 QCOMPARE(dataChangedSpy.wait(), true); 2744 2745 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2746 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2747 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 6); 2748 QCOMPARE(rowsRemovedSpy.count(), 0); 2749 QCOMPARE(rowsMovedSpy.count(), 0); 2750 QCOMPARE(rowsInsertedSpy.count(), 6); 2751 QCOMPARE(dataChangedSpy.count(), 6); 2752 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2753 QCOMPARE(newEntryInListSpy.count(), 6); 2754 } 2755 2756 void MediaPlayListTest::testHasHeaderMoveFirstLikeQml() 2757 { 2758 MediaPlayList myPlayList; 2759 QAbstractItemModelTester testModel(&myPlayList); 2760 DatabaseInterface myDatabaseContent; 2761 TracksListener myListener(&myDatabaseContent); 2762 2763 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2764 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2765 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2766 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2767 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2768 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2769 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2770 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2771 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2772 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2773 2774 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2775 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2776 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2777 QCOMPARE(rowsRemovedSpy.count(), 0); 2778 QCOMPARE(rowsMovedSpy.count(), 0); 2779 QCOMPARE(rowsInsertedSpy.count(), 0); 2780 QCOMPARE(dataChangedSpy.count(), 0); 2781 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2782 QCOMPARE(newEntryInListSpy.count(), 0); 2783 2784 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 2785 2786 connect(&myListener, &TracksListener::trackHasChanged, 2787 &myPlayList, &MediaPlayList::trackChanged, 2788 Qt::QueuedConnection); 2789 connect(&myListener, &TracksListener::tracksListAdded, 2790 &myPlayList, &MediaPlayList::tracksListAdded, 2791 Qt::QueuedConnection); 2792 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2793 &myListener, &TracksListener::trackByNameInList, 2794 Qt::QueuedConnection); 2795 connect(&myPlayList, &MediaPlayList::newEntryInList, 2796 &myListener, &TracksListener::newEntryInList, 2797 Qt::QueuedConnection); 2798 connect(&myPlayList, &MediaPlayList::newUrlInList, 2799 &myListener, &TracksListener::newUrlInList, 2800 Qt::QueuedConnection); 2801 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2802 &myListener, &TracksListener::tracksAdded); 2803 2804 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2805 2806 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2807 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2808 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2809 QCOMPARE(rowsRemovedSpy.count(), 0); 2810 QCOMPARE(rowsMovedSpy.count(), 0); 2811 QCOMPARE(rowsInsertedSpy.count(), 0); 2812 QCOMPARE(dataChangedSpy.count(), 0); 2813 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2814 QCOMPARE(newEntryInListSpy.count(), 0); 2815 2816 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 2817 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2818 2819 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2820 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2821 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2822 QCOMPARE(rowsRemovedSpy.count(), 0); 2823 QCOMPARE(rowsMovedSpy.count(), 0); 2824 QCOMPARE(rowsInsertedSpy.count(), 1); 2825 QCOMPARE(dataChangedSpy.count(), 0); 2826 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2827 QCOMPARE(newEntryInListSpy.count(), 1); 2828 2829 QCOMPARE(dataChangedSpy.wait(), true); 2830 2831 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2832 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2833 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2834 QCOMPARE(rowsRemovedSpy.count(), 0); 2835 QCOMPARE(rowsMovedSpy.count(), 0); 2836 QCOMPARE(rowsInsertedSpy.count(), 1); 2837 QCOMPARE(dataChangedSpy.count(), 1); 2838 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2839 QCOMPARE(newEntryInListSpy.count(), 1); 2840 2841 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 2842 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2843 2844 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2845 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2846 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2847 QCOMPARE(rowsRemovedSpy.count(), 0); 2848 QCOMPARE(rowsMovedSpy.count(), 0); 2849 QCOMPARE(rowsInsertedSpy.count(), 2); 2850 QCOMPARE(dataChangedSpy.count(), 1); 2851 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2852 QCOMPARE(newEntryInListSpy.count(), 2); 2853 2854 QCOMPARE(dataChangedSpy.wait(), true); 2855 2856 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2857 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2858 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 2859 QCOMPARE(rowsRemovedSpy.count(), 0); 2860 QCOMPARE(rowsMovedSpy.count(), 0); 2861 QCOMPARE(rowsInsertedSpy.count(), 2); 2862 QCOMPARE(dataChangedSpy.count(), 2); 2863 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2864 QCOMPARE(newEntryInListSpy.count(), 2); 2865 2866 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 2867 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2868 2869 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2870 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2871 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2872 QCOMPARE(rowsRemovedSpy.count(), 0); 2873 QCOMPARE(rowsMovedSpy.count(), 0); 2874 QCOMPARE(rowsInsertedSpy.count(), 3); 2875 QCOMPARE(dataChangedSpy.count(), 2); 2876 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2877 QCOMPARE(newEntryInListSpy.count(), 3); 2878 2879 QCOMPARE(dataChangedSpy.wait(), true); 2880 2881 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2882 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2883 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 2884 QCOMPARE(rowsRemovedSpy.count(), 0); 2885 QCOMPARE(rowsMovedSpy.count(), 0); 2886 QCOMPARE(rowsInsertedSpy.count(), 3); 2887 QCOMPARE(dataChangedSpy.count(), 3); 2888 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2889 QCOMPARE(newEntryInListSpy.count(), 3); 2890 2891 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track4"), QStringLiteral("artist1"), QStringLiteral("album2"), 4, 1); 2892 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2893 2894 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2895 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2896 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2897 QCOMPARE(rowsRemovedSpy.count(), 0); 2898 QCOMPARE(rowsMovedSpy.count(), 0); 2899 QCOMPARE(rowsInsertedSpy.count(), 4); 2900 QCOMPARE(dataChangedSpy.count(), 3); 2901 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2902 QCOMPARE(newEntryInListSpy.count(), 4); 2903 2904 QCOMPARE(dataChangedSpy.wait(), true); 2905 2906 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2907 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2908 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2909 QCOMPARE(rowsRemovedSpy.count(), 0); 2910 QCOMPARE(rowsMovedSpy.count(), 0); 2911 QCOMPARE(rowsInsertedSpy.count(), 4); 2912 QCOMPARE(dataChangedSpy.count(), 4); 2913 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2914 QCOMPARE(newEntryInListSpy.count(), 4); 2915 2916 myPlayList.moveRows({}, 0, 1, {}, 3); 2917 2918 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2919 QCOMPARE(rowsAboutToBeMovedSpy.count(), 1); 2920 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 2921 QCOMPARE(rowsRemovedSpy.count(), 0); 2922 QCOMPARE(rowsMovedSpy.count(), 1); 2923 QCOMPARE(rowsInsertedSpy.count(), 4); 2924 QCOMPARE(dataChangedSpy.count(), 4); 2925 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2926 QCOMPARE(newEntryInListSpy.count(), 4); 2927 } 2928 2929 void MediaPlayListTest::crashOnEnqueue() 2930 { 2931 MediaPlayList myPlayList; 2932 QAbstractItemModelTester testModel(&myPlayList); 2933 DatabaseInterface myDatabaseContent; 2934 TracksListener myListener(&myDatabaseContent); 2935 CrashEnqueuePlayList myCrash(&myPlayList); 2936 2937 connect(&myPlayList, &MediaPlayList::rowsInserted, &myCrash, &CrashEnqueuePlayList::crashMediaPlayList); 2938 2939 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 2940 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 2941 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 2942 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 2943 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 2944 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 2945 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 2946 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 2947 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 2948 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 2949 2950 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2951 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2952 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2953 QCOMPARE(rowsRemovedSpy.count(), 0); 2954 QCOMPARE(rowsMovedSpy.count(), 0); 2955 QCOMPARE(rowsInsertedSpy.count(), 0); 2956 QCOMPARE(dataChangedSpy.count(), 0); 2957 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2958 QCOMPARE(newEntryInListSpy.count(), 0); 2959 2960 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 2961 2962 connect(&myListener, &TracksListener::trackHasChanged, 2963 &myPlayList, &MediaPlayList::trackChanged, 2964 Qt::QueuedConnection); 2965 connect(&myListener, &TracksListener::tracksListAdded, 2966 &myPlayList, &MediaPlayList::tracksListAdded, 2967 Qt::QueuedConnection); 2968 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 2969 &myListener, &TracksListener::trackByNameInList, 2970 Qt::QueuedConnection); 2971 connect(&myPlayList, &MediaPlayList::newEntryInList, 2972 &myListener, &TracksListener::newEntryInList, 2973 Qt::QueuedConnection); 2974 connect(&myPlayList, &MediaPlayList::newUrlInList, 2975 &myListener, &TracksListener::newUrlInList, 2976 Qt::QueuedConnection); 2977 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 2978 &myListener, &TracksListener::tracksAdded); 2979 2980 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 2981 2982 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2983 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2984 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 2985 QCOMPARE(rowsRemovedSpy.count(), 0); 2986 QCOMPARE(rowsMovedSpy.count(), 0); 2987 QCOMPARE(rowsInsertedSpy.count(), 0); 2988 QCOMPARE(dataChangedSpy.count(), 0); 2989 QCOMPARE(newTrackByNameInListSpy.count(), 0); 2990 QCOMPARE(newEntryInListSpy.count(), 0); 2991 2992 auto newTrackID = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track6"), QStringLiteral("artist1 and artist2"), 2993 QStringLiteral("album2"), 6, 1); 2994 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, newTrackID}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 2995 2996 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 2997 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 2998 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 2999 QCOMPARE(rowsRemovedSpy.count(), 0); 3000 QCOMPARE(rowsMovedSpy.count(), 0); 3001 QCOMPARE(rowsInsertedSpy.count(), 1); 3002 QCOMPARE(dataChangedSpy.count(), 0); 3003 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3004 QCOMPARE(newEntryInListSpy.count(), 1); 3005 3006 QCOMPARE(dataChangedSpy.wait(), true); 3007 3008 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3009 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3010 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 3011 QCOMPARE(rowsRemovedSpy.count(), 0); 3012 QCOMPARE(rowsMovedSpy.count(), 0); 3013 QCOMPARE(rowsInsertedSpy.count(), 1); 3014 QCOMPARE(dataChangedSpy.count(), 1); 3015 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3016 QCOMPARE(newEntryInListSpy.count(), 1); 3017 } 3018 3019 void MediaPlayListTest::testHasHeaderMoveAnotherLikeQml() 3020 { 3021 MediaPlayList myPlayList; 3022 QAbstractItemModelTester testModel(&myPlayList); 3023 DatabaseInterface myDatabaseContent; 3024 TracksListener myListener(&myDatabaseContent); 3025 3026 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 3027 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 3028 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 3029 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 3030 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 3031 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 3032 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 3033 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 3034 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 3035 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 3036 3037 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3038 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3039 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 3040 QCOMPARE(rowsRemovedSpy.count(), 0); 3041 QCOMPARE(rowsMovedSpy.count(), 0); 3042 QCOMPARE(rowsInsertedSpy.count(), 0); 3043 QCOMPARE(dataChangedSpy.count(), 0); 3044 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3045 QCOMPARE(newEntryInListSpy.count(), 0); 3046 3047 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 3048 3049 connect(&myListener, &TracksListener::trackHasChanged, 3050 &myPlayList, &MediaPlayList::trackChanged, 3051 Qt::QueuedConnection); 3052 connect(&myListener, &TracksListener::tracksListAdded, 3053 &myPlayList, &MediaPlayList::tracksListAdded, 3054 Qt::QueuedConnection); 3055 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 3056 &myListener, &TracksListener::trackByNameInList, 3057 Qt::QueuedConnection); 3058 connect(&myPlayList, &MediaPlayList::newEntryInList, 3059 &myListener, &TracksListener::newEntryInList, 3060 Qt::QueuedConnection); 3061 connect(&myPlayList, &MediaPlayList::newUrlInList, 3062 &myListener, &TracksListener::newUrlInList, 3063 Qt::QueuedConnection); 3064 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 3065 &myListener, &TracksListener::tracksAdded); 3066 3067 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 3068 3069 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3070 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3071 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 3072 QCOMPARE(rowsRemovedSpy.count(), 0); 3073 QCOMPARE(rowsMovedSpy.count(), 0); 3074 QCOMPARE(rowsInsertedSpy.count(), 0); 3075 QCOMPARE(dataChangedSpy.count(), 0); 3076 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3077 QCOMPARE(newEntryInListSpy.count(), 0); 3078 3079 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 3080 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3081 3082 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3083 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3084 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 3085 QCOMPARE(rowsRemovedSpy.count(), 0); 3086 QCOMPARE(rowsMovedSpy.count(), 0); 3087 QCOMPARE(rowsInsertedSpy.count(), 1); 3088 QCOMPARE(dataChangedSpy.count(), 0); 3089 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3090 QCOMPARE(newEntryInListSpy.count(), 1); 3091 3092 QCOMPARE(dataChangedSpy.wait(), true); 3093 3094 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3095 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3096 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 3097 QCOMPARE(rowsRemovedSpy.count(), 0); 3098 QCOMPARE(rowsMovedSpy.count(), 0); 3099 QCOMPARE(rowsInsertedSpy.count(), 1); 3100 QCOMPARE(dataChangedSpy.count(), 1); 3101 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3102 QCOMPARE(newEntryInListSpy.count(), 1); 3103 3104 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 3105 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3106 3107 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3108 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3109 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 3110 QCOMPARE(rowsRemovedSpy.count(), 0); 3111 QCOMPARE(rowsMovedSpy.count(), 0); 3112 QCOMPARE(rowsInsertedSpy.count(), 2); 3113 QCOMPARE(dataChangedSpy.count(), 1); 3114 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3115 QCOMPARE(newEntryInListSpy.count(), 2); 3116 3117 QCOMPARE(dataChangedSpy.wait(), true); 3118 3119 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3120 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3121 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 3122 QCOMPARE(rowsRemovedSpy.count(), 0); 3123 QCOMPARE(rowsMovedSpy.count(), 0); 3124 QCOMPARE(rowsInsertedSpy.count(), 2); 3125 QCOMPARE(dataChangedSpy.count(), 2); 3126 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3127 QCOMPARE(newEntryInListSpy.count(), 2); 3128 3129 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track3"), QStringLiteral("artist1"), QStringLiteral("album2"), 3, 1); 3130 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3131 3132 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3133 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3134 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 3135 QCOMPARE(rowsRemovedSpy.count(), 0); 3136 QCOMPARE(rowsMovedSpy.count(), 0); 3137 QCOMPARE(rowsInsertedSpy.count(), 3); 3138 QCOMPARE(dataChangedSpy.count(), 2); 3139 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3140 QCOMPARE(newEntryInListSpy.count(), 3); 3141 3142 QCOMPARE(dataChangedSpy.wait(), true); 3143 3144 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3145 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3146 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 3147 QCOMPARE(rowsRemovedSpy.count(), 0); 3148 QCOMPARE(rowsMovedSpy.count(), 0); 3149 QCOMPARE(rowsInsertedSpy.count(), 3); 3150 QCOMPARE(dataChangedSpy.count(), 3); 3151 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3152 QCOMPARE(newEntryInListSpy.count(), 3); 3153 3154 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track4"), QStringLiteral("artist1"), QStringLiteral("album2"), 4, 1); 3155 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3156 3157 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3158 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3159 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3160 QCOMPARE(rowsRemovedSpy.count(), 0); 3161 QCOMPARE(rowsMovedSpy.count(), 0); 3162 QCOMPARE(rowsInsertedSpy.count(), 4); 3163 QCOMPARE(dataChangedSpy.count(), 3); 3164 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3165 QCOMPARE(newEntryInListSpy.count(), 4); 3166 3167 QCOMPARE(dataChangedSpy.wait(), true); 3168 3169 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3170 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3171 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3172 QCOMPARE(rowsRemovedSpy.count(), 0); 3173 QCOMPARE(rowsMovedSpy.count(), 0); 3174 QCOMPARE(rowsInsertedSpy.count(), 4); 3175 QCOMPARE(dataChangedSpy.count(), 4); 3176 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3177 QCOMPARE(newEntryInListSpy.count(), 4); 3178 3179 myPlayList.moveRows({}, 3, 1, {}, 0); 3180 3181 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3182 QCOMPARE(rowsAboutToBeMovedSpy.count(), 1); 3183 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3184 QCOMPARE(rowsRemovedSpy.count(), 0); 3185 QCOMPARE(rowsMovedSpy.count(), 1); 3186 QCOMPARE(rowsInsertedSpy.count(), 4); 3187 QCOMPARE(dataChangedSpy.count(), 4); 3188 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3189 QCOMPARE(newEntryInListSpy.count(), 4); 3190 } 3191 3192 void MediaPlayListTest::testHasHeaderYetAnotherMoveLikeQml() 3193 { 3194 MediaPlayList myPlayList; 3195 QAbstractItemModelTester testModel(&myPlayList); 3196 DatabaseInterface myDatabaseContent; 3197 TracksListener myListener(&myDatabaseContent); 3198 3199 QSignalSpy rowsAboutToBeMovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeMoved); 3200 QSignalSpy rowsAboutToBeRemovedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeRemoved); 3201 QSignalSpy rowsAboutToBeInsertedSpy(&myPlayList, &MediaPlayList::rowsAboutToBeInserted); 3202 QSignalSpy rowsMovedSpy(&myPlayList, &MediaPlayList::rowsMoved); 3203 QSignalSpy rowsRemovedSpy(&myPlayList, &MediaPlayList::rowsRemoved); 3204 QSignalSpy rowsInsertedSpy(&myPlayList, &MediaPlayList::rowsInserted); 3205 QSignalSpy dataChangedSpy(&myPlayList, &MediaPlayList::dataChanged); 3206 QSignalSpy newTrackByNameInListSpy(&myPlayList, &MediaPlayList::newTrackByNameInList); 3207 QSignalSpy newEntryInListSpy(&myPlayList, &MediaPlayList::newEntryInList); 3208 QSignalSpy newUrlInListSpy(&myPlayList, &MediaPlayList::newUrlInList); 3209 3210 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3211 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3212 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 3213 QCOMPARE(rowsRemovedSpy.count(), 0); 3214 QCOMPARE(rowsMovedSpy.count(), 0); 3215 QCOMPARE(rowsInsertedSpy.count(), 0); 3216 QCOMPARE(dataChangedSpy.count(), 0); 3217 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3218 QCOMPARE(newEntryInListSpy.count(), 0); 3219 3220 myDatabaseContent.init(QStringLiteral("testDbDirectContent")); 3221 3222 connect(&myListener, &TracksListener::trackHasChanged, 3223 &myPlayList, &MediaPlayList::trackChanged, 3224 Qt::QueuedConnection); 3225 connect(&myListener, &TracksListener::tracksListAdded, 3226 &myPlayList, &MediaPlayList::tracksListAdded, 3227 Qt::QueuedConnection); 3228 connect(&myPlayList, &MediaPlayList::newTrackByNameInList, 3229 &myListener, &TracksListener::trackByNameInList, 3230 Qt::QueuedConnection); 3231 connect(&myPlayList, &MediaPlayList::newEntryInList, 3232 &myListener, &TracksListener::newEntryInList, 3233 Qt::QueuedConnection); 3234 connect(&myPlayList, &MediaPlayList::newUrlInList, 3235 &myListener, &TracksListener::newUrlInList, 3236 Qt::QueuedConnection); 3237 connect(&myDatabaseContent, &DatabaseInterface::tracksAdded, 3238 &myListener, &TracksListener::tracksAdded); 3239 3240 myDatabaseContent.insertTracksList(mNewTracks, mNewCovers); 3241 3242 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3243 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3244 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0); 3245 QCOMPARE(rowsRemovedSpy.count(), 0); 3246 QCOMPARE(rowsMovedSpy.count(), 0); 3247 QCOMPARE(rowsInsertedSpy.count(), 0); 3248 QCOMPARE(dataChangedSpy.count(), 0); 3249 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3250 QCOMPARE(newEntryInListSpy.count(), 0); 3251 3252 auto firstTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album2"), 1, 1); 3253 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, firstTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3254 3255 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3256 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3257 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 3258 QCOMPARE(rowsRemovedSpy.count(), 0); 3259 QCOMPARE(rowsMovedSpy.count(), 0); 3260 QCOMPARE(rowsInsertedSpy.count(), 1); 3261 QCOMPARE(dataChangedSpy.count(), 0); 3262 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3263 QCOMPARE(newEntryInListSpy.count(), 1); 3264 3265 QCOMPARE(dataChangedSpy.wait(), true); 3266 3267 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3268 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3269 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1); 3270 QCOMPARE(rowsRemovedSpy.count(), 0); 3271 QCOMPARE(rowsMovedSpy.count(), 0); 3272 QCOMPARE(rowsInsertedSpy.count(), 1); 3273 QCOMPARE(dataChangedSpy.count(), 1); 3274 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3275 QCOMPARE(newEntryInListSpy.count(), 1); 3276 3277 auto secondTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track2"), QStringLiteral("artist1"), QStringLiteral("album2"), 2, 1); 3278 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, secondTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3279 3280 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3281 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3282 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 3283 QCOMPARE(rowsRemovedSpy.count(), 0); 3284 QCOMPARE(rowsMovedSpy.count(), 0); 3285 QCOMPARE(rowsInsertedSpy.count(), 2); 3286 QCOMPARE(dataChangedSpy.count(), 1); 3287 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3288 QCOMPARE(newEntryInListSpy.count(), 2); 3289 3290 QCOMPARE(dataChangedSpy.wait(), true); 3291 3292 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3293 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3294 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 2); 3295 QCOMPARE(rowsRemovedSpy.count(), 0); 3296 QCOMPARE(rowsMovedSpy.count(), 0); 3297 QCOMPARE(rowsInsertedSpy.count(), 2); 3298 QCOMPARE(dataChangedSpy.count(), 2); 3299 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3300 QCOMPARE(newEntryInListSpy.count(), 2); 3301 3302 auto thirdTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track1"), QStringLiteral("artist1"), QStringLiteral("album1"), 1, 1); 3303 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, thirdTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3304 3305 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3306 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3307 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 3308 QCOMPARE(rowsRemovedSpy.count(), 0); 3309 QCOMPARE(rowsMovedSpy.count(), 0); 3310 QCOMPARE(rowsInsertedSpy.count(), 3); 3311 QCOMPARE(dataChangedSpy.count(), 2); 3312 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3313 QCOMPARE(newEntryInListSpy.count(), 3); 3314 3315 QCOMPARE(dataChangedSpy.wait(), true); 3316 3317 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3318 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3319 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 3); 3320 QCOMPARE(rowsRemovedSpy.count(), 0); 3321 QCOMPARE(rowsMovedSpy.count(), 0); 3322 QCOMPARE(rowsInsertedSpy.count(), 3); 3323 QCOMPARE(dataChangedSpy.count(), 3); 3324 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3325 QCOMPARE(newEntryInListSpy.count(), 3); 3326 3327 auto fourthTrackId = myDatabaseContent.trackIdFromTitleAlbumTrackDiscNumber(QStringLiteral("track4"), QStringLiteral("artist1"), QStringLiteral("album2"), 4, 1); 3328 myPlayList.enqueueOneEntry({{{DataTypes::DatabaseIdRole, fourthTrackId}, {DataTypes::ElementTypeRole, ElisaUtils::Track}}, {}, {}}); 3329 3330 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3331 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3332 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3333 QCOMPARE(rowsRemovedSpy.count(), 0); 3334 QCOMPARE(rowsMovedSpy.count(), 0); 3335 QCOMPARE(rowsInsertedSpy.count(), 4); 3336 QCOMPARE(dataChangedSpy.count(), 3); 3337 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3338 QCOMPARE(newEntryInListSpy.count(), 4); 3339 3340 QCOMPARE(dataChangedSpy.wait(), true); 3341 3342 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3343 QCOMPARE(rowsAboutToBeMovedSpy.count(), 0); 3344 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3345 QCOMPARE(rowsRemovedSpy.count(), 0); 3346 QCOMPARE(rowsMovedSpy.count(), 0); 3347 QCOMPARE(rowsInsertedSpy.count(), 4); 3348 QCOMPARE(dataChangedSpy.count(), 4); 3349 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3350 QCOMPARE(newEntryInListSpy.count(), 4); 3351 3352 myPlayList.moveRows({}, 0, 1, {}, 2); 3353 3354 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3355 QCOMPARE(rowsAboutToBeMovedSpy.count(), 1); 3356 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3357 QCOMPARE(rowsRemovedSpy.count(), 0); 3358 QCOMPARE(rowsMovedSpy.count(), 1); 3359 QCOMPARE(rowsInsertedSpy.count(), 4); 3360 QCOMPARE(dataChangedSpy.count(), 4); 3361 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3362 QCOMPARE(newEntryInListSpy.count(), 4); 3363 3364 myPlayList.moveRows({}, 2, 1, {}, 0); 3365 3366 QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0); 3367 QCOMPARE(rowsAboutToBeMovedSpy.count(), 2); 3368 QCOMPARE(rowsAboutToBeInsertedSpy.count(), 4); 3369 QCOMPARE(rowsRemovedSpy.count(), 0); 3370 QCOMPARE(rowsMovedSpy.count(), 2); 3371 QCOMPARE(rowsInsertedSpy.count(), 4); 3372 QCOMPARE(dataChangedSpy.count(), 4); 3373 QCOMPARE(newTrackByNameInListSpy.count(), 0); 3374 QCOMPARE(newEntryInListSpy.count(), 4); 3375 } 3376 3377 CrashEnqueuePlayList::CrashEnqueuePlayList(MediaPlayList *list, QObject *parent) : QObject(parent), mList(list) 3378 { 3379 } 3380 3381 void CrashEnqueuePlayList::crashMediaPlayList() 3382 { 3383 mList->data(mList->index(0, 0), MediaPlayList::ResourceRole); 3384 } 3385 3386 QTEST_GUILESS_MAIN(MediaPlayListTest) 3387 3388 #include "moc_mediaplaylisttest.cpp"