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

0001 /*
0002     SPDX-FileCopyrightText: 2007 Richard Lärkäng <nouseforaname@home.se>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "cachetest.h"
0008 #include "libkcddb/cache.h"
0009 
0010 #include "libkcddb/client.h"
0011 #include "config-musicbrainz.h"
0012 #include <QTest>
0013 
0014 using namespace KCDDB;
0015 
0016 void CacheTest::initTestCase()
0017 {
0018   m_client = new Client;
0019   m_client->config().setCacheLocations(QStringList(QDir::homePath()+QString::fromUtf8("/.cddbTest/")));
0020 
0021   // a1107d0a
0022   m_list
0023     << 150      // First track start.
0024     << 29462
0025     << 66983
0026     << 96785
0027     << 135628
0028     << 168676
0029     << 194147
0030     << 222158
0031     << 247076
0032     << 278203   // Last track start.
0033     << 316732;  // Disc end.
0034 
0035   m_info.set(Artist, QString().leftJustified(10, QChar(0xe4)));
0036   m_info.set(Title, QString().leftJustified(10, QChar(0xf6)));
0037 
0038   for (int i=0; i<10; i++)
0039   {
0040     m_info.track(i).set(Title, QString().leftJustified(30*(i+1), QChar('a'+i)));
0041   }
0042 
0043 }
0044 
0045 void CacheTest::cleanupTestCase()
0046 {
0047   QDir().rmdir(QDir::homePath()+QString::fromUtf8("/.cddbTest/"));
0048 }
0049 
0050 bool CacheTest::verify(const QString& source, const QString& discid, const CDInfo& info)
0051 {
0052   Cache::store(m_list, info, m_client->config());
0053 
0054   const CDInfoList results = Cache::lookup(m_list, m_client->config());
0055   for (const CDInfo &newInfo : results) {
0056     if (newInfo.get(QString::fromUtf8("source")) == source && newInfo.get(QString::fromUtf8("discid")).toString() == discid)
0057     {
0058       if (newInfo.get(Artist) != m_info.get(Artist))
0059         continue;
0060       if (newInfo.get(Title) != m_info.get(Title))
0061         continue;
0062       bool tracksOk = true;
0063       for (int i=0; i < 10; i++)
0064       {
0065         if (newInfo.track(i).get(Title) != m_info.track(i).get(Title))
0066         {
0067           tracksOk = false;
0068           break;
0069         }
0070       }
0071 
0072       if (tracksOk)
0073         return true;
0074     }
0075   }
0076   return false;
0077 }
0078 
0079 void CacheTest::testFreedb()
0080 {
0081   CDInfo testInfo = m_info;
0082   testInfo.set(QString::fromUtf8("source"), QString::fromUtf8("freedb"));
0083   testInfo.set(QString::fromUtf8("discid"), QString::fromUtf8("a1107d0a"));
0084   testInfo.set(QString::fromUtf8("category"), QString::fromUtf8("misc"));
0085 
0086   QVERIFY(verify(QString::fromUtf8("freedb"), QString::fromUtf8("a1107d0a"), testInfo));
0087 
0088   QFile::remove(QDir::homePath()+QString::fromUtf8("/.cddbTest/misc/a1107d0a"));
0089   QDir().rmdir(QDir::homePath()+QString::fromUtf8("/.cddbTest/misc/"));
0090 }
0091 
0092 void CacheTest::testUser()
0093 {
0094   CDInfo testInfo = m_info;
0095   testInfo.set(QString::fromUtf8("source"), QString::fromUtf8("user"));
0096 
0097   QVERIFY(verify(QString::fromUtf8("user"), QString::fromUtf8("a1107d0a"), testInfo));
0098 
0099   QFile::remove(QDir::homePath()+QString::fromUtf8("/.cddbTest/user/a1107d0a"));
0100   QDir().rmdir(QDir::homePath()+QString::fromUtf8("/.cddbTest/user/"));
0101 }
0102 
0103 void CacheTest::testMusicbrainz()
0104 {
0105 #ifdef HAVE_MUSICBRAINZ5
0106   CDInfo testInfo = m_info;
0107   testInfo.set(QString::fromUtf8("source"), QString::fromUtf8("musicbrainz"));
0108   testInfo.set(QString::fromUtf8("discid"), QString::fromUtf8("wdABQ7s86gS7eVmS74CCQ6KwPUI-"));
0109 
0110   QVERIFY(verify(QString::fromUtf8("musicbrainz"), QString::fromUtf8("wdABQ7s86gS7eVmS74CCQ6KwPUI-"), testInfo));
0111 
0112   QFile::remove(QDir::homePath()+QString::fromUtf8("/.cddbTest/musicbrainz/wdABQ7s86gS7eVmS74CCQ6KwPUI-"));
0113   QDir().rmdir(QDir::homePath()+QString::fromUtf8("/.cddbTest/musicbrainz/"));
0114 #endif
0115 }
0116 
0117 QTEST_GUILESS_MAIN(CacheTest)
0118 
0119 #include "moc_cachetest.cpp"