File indexing completed on 2024-04-21 04:54:19

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 "asynchttplookuptest.h"
0009 #include "libkcddb/cache.h"
0010 #include "libkcddb/lookup.h"
0011 #include <QTest>
0012 
0013 void AsyncHTTPLookupTest::testLookup()
0014 {
0015   using namespace KCDDB;
0016 
0017   client_ = new Client;
0018   client_->config().setHostname(QString::fromUtf8("gnudb.gnudb.org"));
0019   client_->config().setPort(80);
0020   client_->config().setCacheLookupEnabled(false);
0021   client_->config().setFreedbLookupEnabled(true);
0022   client_->config().setMusicBrainzLookupEnabled(false);
0023   client_->config().setFreedbLookupTransport(Lookup::HTTP);
0024   client_->setBlockingMode( false );
0025 
0026   connect(client_, &KCDDB::Client::finished, this, &AsyncHTTPLookupTest::slotFinished);
0027 
0028   TrackOffsetList list;
0029 
0030   // a1107d0a - Kruder & Dorfmeister - The K&D Sessions - Disc One.
0031   list
0032     << 150      // First track start.
0033     << 29462
0034     << 66983
0035     << 96785
0036     << 135628
0037     << 168676
0038     << 194147
0039     << 222158
0040     << 247076
0041     << 278203   // Last track start.
0042     << 316732;  // Disc end.
0043 
0044   client_->lookup(list);
0045 
0046   m_eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
0047 
0048   delete client_;
0049 
0050   QVERIFY(m_result == Success);
0051 
0052   // If revision doesn't match, test probably needs to be updated
0053   // See: http://www.gnudb.org/gnudb/jazz/a1107d0a for updated data
0054   QCOMPARE(m_info.get(QString::fromUtf8("revision")).toInt(), 8);
0055 
0056   QCOMPARE(m_info.get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0057   QCOMPARE(m_info.get(Title).toString(),QString::fromUtf8("The K&D Sessions (Part One)"));
0058   QCOMPARE(m_info.get(Genre).toString(),QString::fromUtf8("Trip-Hop"));
0059   QCOMPARE(m_info.get(Year).toInt(),1998);
0060   QCOMPARE(m_info.track(0).get(Title).toString(),QString::fromUtf8("Roni Size - Heroes (Kruder's Long Loose Bossa remixed by Peter Kruder)"));
0061   QCOMPARE(m_info.track(1).get(Title).toString(),QString::fromUtf8("Alex Reece - Jazz Master (K&D Session)"));
0062   QCOMPARE(m_info.track(2).get(Title).toString(),QString::fromUtf8("Count Basic - Speechless (Drum 'n' Bass remixed by Peter Kruder)"));
0063   QCOMPARE(m_info.track(3).get(Title).toString(),QString::fromUtf8("Rockers Hi-Fi - Going Under (K&D Session)"));
0064   QCOMPARE(m_info.track(4).get(Title).toString(),QString::fromUtf8("Bomb The Bass - Bug Powder Dust (K&D Session)"));
0065   QCOMPARE(m_info.track(5).get(Title).toString(),QString::fromUtf8("Aphrodelics - Rollin' On Chrome (Wild Motherfucker Dub remixed by Richard Dorfmeister)"));
0066   QCOMPARE(m_info.track(6).get(Title).toString(),QString::fromUtf8("Depeche Mode - Useless (K&D Session)"));
0067   QCOMPARE(m_info.track(7).get(Title).toString(),QString::fromUtf8("Count Basic - Gotta Jazz (remixed by Richard Dorfmeister)"));
0068   QCOMPARE(m_info.track(8).get(Title).toString(),QString::fromUtf8("Rainer Truby Trio - Donaueschingen (Peter Kruder's Donaudampfschifffahrtsgesellschaftskapitnskajtenremix)"));
0069   QCOMPARE(m_info.track(9).get(Title).toString(),QString::fromUtf8("Lamb - Trans Fatty Acid (K&D Session)"));
0070   QCOMPARE(m_info.track(0).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0071   QCOMPARE(m_info.track(1).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0072   QCOMPARE(m_info.track(2).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0073   QCOMPARE(m_info.track(3).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0074   QCOMPARE(m_info.track(4).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0075   QCOMPARE(m_info.track(5).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0076   QCOMPARE(m_info.track(6).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0077   QCOMPARE(m_info.track(7).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0078   QCOMPARE(m_info.track(8).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0079   QCOMPARE(m_info.track(9).get(Artist).toString(),QString::fromUtf8("Kruder & Dorfmeister"));
0080 }
0081 
0082   void
0083 AsyncHTTPLookupTest::slotFinished(Result r)
0084 {
0085   m_result = r;
0086   qDebug() << "AsyncHTTPLookupTest::slotFinished: Got " << KCDDB::resultToString(r);
0087 
0088   const CDInfoList l = client_->lookupResponse();
0089 
0090   qDebug() << "AsyncHTTPLookupTest::slotFinished: Item count: " <<  l.count();
0091 
0092   for(const CDInfo &i : l) {
0093     if (i.get(QString::fromUtf8("discid")) == QVariant(QString::fromUtf8("a1107d0a")) && i.get(Category) == QVariant(QString::fromUtf8("jazz")))
0094     {
0095       qDebug() << "Found the CD";
0096       m_info = i;
0097       break;
0098     }
0099   }
0100 
0101   m_eventLoop.quit();
0102 }
0103 
0104 QTEST_GUILESS_MAIN(AsyncHTTPLookupTest)
0105 
0106 #include "moc_asynchttplookuptest.cpp"