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"