File indexing completed on 2024-04-28 12:40:12
0001 /* 0002 SPDX-FileCopyrightText: 2006 Richard Lärkäng <nouseforaname@home.se> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 0008 #include "asyncmusicbrainztest.h" 0009 #include "libkcddb/cache.h" 0010 #include "libkcddb/lookup.h" 0011 #include "config-musicbrainz.h" 0012 #include <QTest> 0013 0014 void AsyncMusicBrainzTest::testLookup() 0015 { 0016 using namespace KCDDB; 0017 0018 #ifndef HAVE_MUSICBRAINZ5 0019 QSKIP("This test requires libmusicbrainz", SkipAll); 0020 #endif 0021 0022 client_ = new Client; 0023 client_->config().setCacheLookupEnabled(false); 0024 client_->config().setFreedbLookupEnabled(false); 0025 client_->config().setMusicBrainzLookupEnabled(true); 0026 client_->setBlockingMode( false ); 0027 0028 connect(client_,&KCDDB::Client::finished,this, &AsyncMusicBrainzTest::slotFinished); 0029 0030 TrackOffsetList list; 0031 0032 // Various Artists / Definitivt 50 Spänn 10 0033 list 0034 << 150 0035 << 17130 0036 << 26340 0037 << 44855 0038 << 60530 0039 << 75800 0040 << 90182 0041 << 106605 0042 << 122995 0043 << 139005 0044 << 153317 0045 << 167967 0046 << 179012 0047 << 190190 0048 << 202162 0049 << 211312 0050 << 229037 0051 << 240035; 0052 0053 client_->lookup(list); 0054 0055 m_eventLoop.exec(QEventLoop::ExcludeUserInputEvents); 0056 0057 QVERIFY(m_result == Success); 0058 0059 // See https://musicbrainz.org/release/dbb3e39a-4bea-4e32-a546-456654f30ca6.html for changes 0060 QCOMPARE(m_info.numberOfTracks(),17); 0061 0062 QCOMPARE(m_info.get(Artist).toString(),QString::fromUtf8("Various Artists")); 0063 QCOMPARE(m_info.get(Title).toString(),QString::fromUtf8("Definitivt 50 spänn 10")); 0064 // genre not really supported for musicbrainz 0065 QCOMPARE(m_info.get(Genre).toString(),QString()); 0066 QCOMPARE(m_info.get(Year).toInt(),2001); 0067 QCOMPARE(m_info.track(0).get(Title).toString(),QString::fromUtf8("Uphill Struggle")); 0068 QCOMPARE(m_info.track(1).get(Title).toString(),QString::fromUtf8("Vill du bli miljonär?")); 0069 QCOMPARE(m_info.track(2).get(Title).toString(),QString::fromUtf8("Här är jag")); 0070 QCOMPARE(m_info.track(3).get(Title).toString(),QString::fromUtf8("Århundradets fest")); 0071 QCOMPARE(m_info.track(4).get(Title).toString(),QString::fromUtf8("Vem valde mittemellan")); 0072 QCOMPARE(m_info.track(5).get(Title).toString(),QString::fromUtf8("Hippieambulansen")); 0073 QCOMPARE(m_info.track(6).get(Title).toString(),QString::fromUtf8("Jonsson")); 0074 QCOMPARE(m_info.track(7).get(Title).toString(),QString::fromUtf8("Jag lämnar filmen")); 0075 QCOMPARE(m_info.track(8).get(Title).toString(),QString::fromUtf8("39 Steg")); 0076 QCOMPARE(m_info.track(9).get(Title).toString(),QString::fromUtf8("Lyckliga land")); 0077 QCOMPARE(m_info.track(10).get(Title).toString(),QString::fromUtf8("Helpless")); 0078 QCOMPARE(m_info.track(11).get(Title).toString(),QString::fromUtf8("Tunna skivor")); 0079 QCOMPARE(m_info.track(12).get(Title).toString(),QString::fromUtf8("God läskeblask")); 0080 QCOMPARE(m_info.track(13).get(Title).toString(),QString::fromUtf8("Hur snygg é du då?")); 0081 QCOMPARE(m_info.track(14).get(Title).toString(),QString::fromUtf8("Självupptagen")); 0082 QCOMPARE(m_info.track(15).get(Title).toString(),QString::fromUtf8("Sound Is Compressed; Words Rebel and Hiss")); 0083 QCOMPARE(m_info.track(16).get(Title).toString(),QString::fromUtf8("Vi är på väg")); 0084 QCOMPARE(m_info.track(0).get(Artist).toString(),QString::fromUtf8("Adhesive")); 0085 QCOMPARE(m_info.track(1).get(Artist).toString(),QString::fromUtf8("Troublemakers")); 0086 QCOMPARE(m_info.track(2).get(Artist).toString(),QString::fromUtf8("Mimikry")); 0087 QCOMPARE(m_info.track(3).get(Artist).toString(),QString::fromUtf8("Lundberg & Dellamorte")); 0088 QCOMPARE(m_info.track(4).get(Artist).toString(),QString::fromUtf8("Charta 77")); 0089 QCOMPARE(m_info.track(5).get(Artist).toString(),QString::fromUtf8("UBBA")); 0090 QCOMPARE(m_info.track(6).get(Artist).toString(),QString::fromUtf8("Coca Carola")); 0091 QCOMPARE(m_info.track(7).get(Artist).toString(),QString::fromUtf8("Spoiler")); 0092 QCOMPARE(m_info.track(8).get(Artist).toString(),QString::fromUtf8("Strebers")); 0093 QCOMPARE(m_info.track(9).get(Artist).toString(),QString::fromUtf8("Iguana Party")); 0094 QCOMPARE(m_info.track(10).get(Artist).toString(),QString::fromUtf8("Stoned")); 0095 QCOMPARE(m_info.track(11).get(Artist).toString(),QString::fromUtf8("Per Bertil Birgers orkester")); 0096 QCOMPARE(m_info.track(12).get(Artist).toString(),QString::fromUtf8("Slutstation Tjernobyl")); 0097 QCOMPARE(m_info.track(13).get(Artist).toString(),QString::fromUtf8("SBD")); 0098 QCOMPARE(m_info.track(14).get(Artist).toString(),QString::fromUtf8("Skumdum")); 0099 QCOMPARE(m_info.track(15).get(Artist).toString(),QString::fromUtf8("Text")); 0100 QCOMPARE(m_info.track(16).get(Artist).toString(),QString::fromUtf8("Ohlson Har Semester Production")); 0101 // comments not supported in a simple way 0102 for (int j=0; j < 17; j++) 0103 QCOMPARE(m_info.track(j).get(Comment).toString(),QString()); 0104 0105 // Make sure it's the same when loaded from the cache again 0106 client_->config().setCacheLookupEnabled(true); 0107 client_->config().setFreedbLookupEnabled(false); 0108 client_->config().setMusicBrainzLookupEnabled(false); 0109 client_->setBlockingMode(true); 0110 0111 client_->lookup(list); 0112 0113 CDInfoList response = client_->lookupResponse(); 0114 QVERIFY(response.count() > 0); 0115 0116 CDInfo cacheInfo(response.first()); 0117 QCOMPARE(m_info.get(Artist).toString(),cacheInfo.get(Artist).toString()); 0118 QCOMPARE(m_info.get(Title).toString(),cacheInfo.get(Title).toString()); 0119 QCOMPARE(m_info.get(Year).toInt(),cacheInfo.get(Year).toInt()); 0120 for (int j=0; j < 17; j++) 0121 { 0122 QCOMPARE(m_info.track(j).get(Title).toString(),cacheInfo.track(j).get(Title).toString()); 0123 QCOMPARE(m_info.track(j).get(Comment).toString(),cacheInfo.track(j).get(Comment).toString()); 0124 } 0125 0126 // Try to provoke crashes (see bug 336678): 0127 client_->config().setCacheLookupEnabled(false); 0128 client_->config().setFreedbLookupEnabled(false); 0129 client_->config().setMusicBrainzLookupEnabled(true); 0130 client_->setBlockingMode( false ); 0131 0132 qDebug() << "Trying to crash AsyncMusicBrainzLookup by starting multiple lookups"; 0133 client_->lookup(list); 0134 client_->lookup(list); 0135 m_eventLoop.exec(QEventLoop::ExcludeUserInputEvents); 0136 0137 qDebug() << "Trying to crash AsyncMusicBrainzLookup by deleting object while lookup is still in progress"; 0138 client_->lookup(list); 0139 delete client_; 0140 } 0141 0142 void AsyncMusicBrainzTest::slotFinished(Result r) 0143 { 0144 m_result = r; 0145 qDebug() << ": Got " << KCDDB::resultToString(r); 0146 0147 CDInfoList l = client_->lookupResponse(); 0148 0149 qDebug() << ": Item count: " << l.count(); 0150 0151 QVERIFY(l.count() > 0); 0152 m_info = l.first(); 0153 0154 m_eventLoop.quit(); 0155 } 0156 0157 QTEST_GUILESS_MAIN(AsyncMusicBrainzTest) 0158 0159 #include "moc_asyncmusicbrainztest.cpp"