Removing QWidget dependency from src/core.
This commit is contained in:
@@ -20,9 +20,10 @@
|
||||
#include <QSignalSpy>
|
||||
#include <QTest>
|
||||
|
||||
#include "core/DatabaseIcons.h"
|
||||
#include "core/Entry.h"
|
||||
#include "core/Group.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include "gui/DatabaseIcons.h"
|
||||
#include "gui/IconModels.h"
|
||||
#include "gui/SortFilterHideProxyModel.h"
|
||||
#include "gui/entry/AutoTypeAssociationsModel.h"
|
||||
|
||||
@@ -315,36 +315,34 @@ void TestGroup::testCopyCustomIcon()
|
||||
QScopedPointer<Database> dbSource(new Database());
|
||||
|
||||
QUuid groupIconUuid = QUuid::createUuid();
|
||||
QImage groupIcon(16, 16, QImage::Format_RGB32);
|
||||
groupIcon.setPixel(0, 0, qRgb(255, 0, 0));
|
||||
QByteArray groupIcon("group icon");
|
||||
dbSource->metadata()->addCustomIcon(groupIconUuid, groupIcon);
|
||||
|
||||
QUuid entryIconUuid = QUuid::createUuid();
|
||||
QImage entryIcon(16, 16, QImage::Format_RGB32);
|
||||
entryIcon.setPixel(0, 0, qRgb(255, 0, 0));
|
||||
QByteArray entryIcon("entry icon");
|
||||
dbSource->metadata()->addCustomIcon(entryIconUuid, entryIcon);
|
||||
|
||||
Group* group = new Group();
|
||||
group->setParent(dbSource->rootGroup());
|
||||
group->setIcon(groupIconUuid);
|
||||
QCOMPARE(group->icon(), groupIcon);
|
||||
QCOMPARE(group->database()->metadata()->customIcon(groupIconUuid), groupIcon);
|
||||
|
||||
Entry* entry = new Entry();
|
||||
entry->setGroup(dbSource->rootGroup());
|
||||
entry->setIcon(entryIconUuid);
|
||||
QCOMPARE(entry->icon(), entryIcon);
|
||||
QCOMPARE(entry->database()->metadata()->customIcon(entryIconUuid), entryIcon);
|
||||
|
||||
QScopedPointer<Database> dbTarget(new Database());
|
||||
|
||||
group->setParent(dbTarget->rootGroup());
|
||||
QVERIFY(dbTarget->metadata()->hasCustomIcon(groupIconUuid));
|
||||
QCOMPARE(dbTarget->metadata()->customIcon(groupIconUuid), groupIcon);
|
||||
QCOMPARE(group->icon(), groupIcon);
|
||||
QCOMPARE(group->database()->metadata()->customIcon(groupIconUuid), groupIcon);
|
||||
|
||||
entry->setGroup(dbTarget->rootGroup());
|
||||
QVERIFY(dbTarget->metadata()->hasCustomIcon(entryIconUuid));
|
||||
QCOMPARE(dbTarget->metadata()->customIcon(entryIconUuid), entryIcon);
|
||||
QCOMPARE(entry->icon(), entryIcon);
|
||||
QCOMPARE(entry->database()->metadata()->customIcon(entryIconUuid), entryIcon);
|
||||
}
|
||||
|
||||
void TestGroup::testClone()
|
||||
@@ -425,11 +423,9 @@ void TestGroup::testCopyCustomIcons()
|
||||
QScopedPointer<Database> dbSource(new Database());
|
||||
QScopedPointer<Database> dbTarget(new Database());
|
||||
|
||||
QImage iconImage1(1, 1, QImage::Format_RGB32);
|
||||
iconImage1.setPixel(0, 0, qRgb(1, 2, 3));
|
||||
QByteArray iconImage1("icon 1");
|
||||
|
||||
QImage iconImage2(1, 1, QImage::Format_RGB32);
|
||||
iconImage2.setPixel(0, 0, qRgb(4, 5, 6));
|
||||
QByteArray iconImage2("icon 2");
|
||||
|
||||
QScopedPointer<Group> group1(new Group());
|
||||
group1->setParent(dbSource->rootGroup());
|
||||
@@ -469,8 +465,8 @@ void TestGroup::testCopyCustomIcons()
|
||||
QVERIFY(metaTarget->hasCustomIcon(entry1IconOld));
|
||||
QVERIFY(metaTarget->hasCustomIcon(entry1IconNew));
|
||||
|
||||
QCOMPARE(metaTarget->customIcon(group1Icon).pixel(0, 0), qRgb(1, 2, 3));
|
||||
QCOMPARE(metaTarget->customIcon(group2Icon).pixel(0, 0), qRgb(4, 5, 6));
|
||||
QCOMPARE(metaTarget->customIcon(group1Icon), iconImage1);
|
||||
QCOMPARE(metaTarget->customIcon(group2Icon), iconImage2);
|
||||
}
|
||||
|
||||
void TestGroup::testFindEntry()
|
||||
@@ -1075,21 +1071,18 @@ void TestGroup::testApplyGroupIconRecursively()
|
||||
// Set an icon per UUID to the subgroup and apply recursively
|
||||
// -> all groups and entries except the root group have the same icon
|
||||
const QUuid subgroupIconUuid = QUuid::createUuid();
|
||||
QImage subgroupIcon(16, 16, QImage::Format_RGB32);
|
||||
subgroupIcon.setPixel(0, 0, qRgb(255, 0, 0));
|
||||
QByteArray subgroupIcon("subgroup icon");
|
||||
|
||||
database.metadata()->addCustomIcon(subgroupIconUuid, subgroupIcon);
|
||||
subgroup->setIcon(subgroupIconUuid);
|
||||
subgroup->applyGroupIconToChildGroups();
|
||||
subgroup->applyGroupIconToChildEntries();
|
||||
QVERIFY(database.rootGroup()->iconNumber() == rootIconNumber);
|
||||
QCOMPARE(subgroup->iconUuid(), subgroupIconUuid);
|
||||
QCOMPARE(subgroup->icon(), subgroupIcon);
|
||||
QCOMPARE(subgroupEntry->iconUuid(), subgroupIconUuid);
|
||||
QCOMPARE(subgroupEntry->icon(), subgroupIcon);
|
||||
QCOMPARE(subsubgroup->iconUuid(), subgroupIconUuid);
|
||||
QCOMPARE(subsubgroup->icon(), subgroupIcon);
|
||||
QCOMPARE(subsubgroupEntry->iconUuid(), subgroupIconUuid);
|
||||
QCOMPARE(subsubgroupEntry->icon(), subgroupIcon);
|
||||
QCOMPARE(subgroup->database()->metadata()->customIcon(subgroupIconUuid), subgroupIcon);
|
||||
|
||||
// Reset all icons to root icon
|
||||
database.rootGroup()->setIcon(rootIconNumber);
|
||||
|
||||
@@ -114,20 +114,12 @@ void TestKeePass1Reader::testMasterKey()
|
||||
void TestKeePass1Reader::testCustomIcons()
|
||||
{
|
||||
QCOMPARE(m_db->metadata()->customIconsOrder().size(), 1);
|
||||
QUuid uuid = m_db->metadata()->customIconsOrder().at(0);
|
||||
QVERIFY(m_db->metadata()->hasCustomIcon(uuid));
|
||||
QByteArray icon = m_db->metadata()->customIcon(uuid);
|
||||
|
||||
Entry* entry = m_db->rootGroup()->children().at(1)->entries().at(0);
|
||||
|
||||
QCOMPARE(entry->icon().width(), 16);
|
||||
QCOMPARE(entry->icon().height(), 16);
|
||||
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int y = 0; y < 16; y++) {
|
||||
QRgb rgb = entry->icon().pixel(x, y);
|
||||
QCOMPARE(qRed(rgb), 8);
|
||||
QCOMPARE(qGreen(rgb), 160);
|
||||
QCOMPARE(qBlue(rgb), 60);
|
||||
}
|
||||
}
|
||||
QVERIFY(icon.startsWith(
|
||||
"\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\b\x06\x00\x00\x00\x1F\xF3\xFF"));
|
||||
}
|
||||
|
||||
void TestKeePass1Reader::testGroupExpanded()
|
||||
|
||||
@@ -113,18 +113,10 @@ void TestKeePass2Format::testXmlCustomIcons()
|
||||
QCOMPARE(m_xmlDb->metadata()->customIconsOrder().size(), 1);
|
||||
QUuid uuid = QUuid::fromRfc4122(QByteArray::fromBase64("++vyI+daLk6omox4a6kQGA=="));
|
||||
QVERIFY(m_xmlDb->metadata()->hasCustomIcon(uuid));
|
||||
QImage icon = m_xmlDb->metadata()->customIcon(uuid);
|
||||
QCOMPARE(icon.width(), 16);
|
||||
QCOMPARE(icon.height(), 16);
|
||||
QByteArray icon = m_xmlDb->metadata()->customIcon(uuid);
|
||||
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int y = 0; y < 16; y++) {
|
||||
QRgb rgb = icon.pixel(x, y);
|
||||
QCOMPARE(qRed(rgb), 128);
|
||||
QCOMPARE(qGreen(rgb), 0);
|
||||
QCOMPARE(qBlue(rgb), 128);
|
||||
}
|
||||
}
|
||||
QVERIFY(icon.startsWith(
|
||||
"\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\b\x06\x00\x00\x00\x1F\xF3\xFF"));
|
||||
}
|
||||
|
||||
void TestKeePass2Format::testXmlGroupRoot()
|
||||
|
||||
@@ -998,8 +998,7 @@ void TestMerge::testUpdateGroup()
|
||||
groupSourceInitial->setName("group2 renamed");
|
||||
groupSourceInitial->setNotes("updated notes");
|
||||
QUuid customIconId = QUuid::createUuid();
|
||||
QImage customIcon;
|
||||
dbSource->metadata()->addCustomIcon(customIconId, customIcon);
|
||||
dbSource->metadata()->addCustomIcon(customIconId, QString("custom icon").toLocal8Bit());
|
||||
groupSourceInitial->setIcon(customIconId);
|
||||
|
||||
QPointer<Entry> entrySourceInitial = dbSource->rootGroup()->findEntryByPath("entry1");
|
||||
@@ -1113,9 +1112,8 @@ void TestMerge::testMergeCustomIcons()
|
||||
m_clock->advanceSecond(1);
|
||||
|
||||
QUuid customIconId = QUuid::createUuid();
|
||||
QImage customIcon;
|
||||
|
||||
dbSource->metadata()->addCustomIcon(customIconId, customIcon);
|
||||
dbSource->metadata()->addCustomIcon(customIconId, QString("custom icon").toLocal8Bit());
|
||||
// Sanity check.
|
||||
QVERIFY(dbSource->metadata()->hasCustomIcon(customIconId));
|
||||
|
||||
@@ -1138,10 +1136,12 @@ void TestMerge::testMergeDuplicateCustomIcons()
|
||||
m_clock->advanceSecond(1);
|
||||
|
||||
QUuid customIconId = QUuid::createUuid();
|
||||
QImage customIcon;
|
||||
|
||||
dbSource->metadata()->addCustomIcon(customIconId, customIcon);
|
||||
dbDestination->metadata()->addCustomIcon(customIconId, customIcon);
|
||||
QByteArray customIcon1 = QString("custom icon 1").toLocal8Bit();
|
||||
QByteArray customIcon2 = QString("custom icon 2").toLocal8Bit();
|
||||
|
||||
dbSource->metadata()->addCustomIcon(customIconId, customIcon1);
|
||||
dbDestination->metadata()->addCustomIcon(customIconId, customIcon2);
|
||||
// Sanity check.
|
||||
QVERIFY(dbSource->metadata()->hasCustomIcon(customIconId));
|
||||
QVERIFY(dbDestination->metadata()->hasCustomIcon(customIconId));
|
||||
@@ -1153,6 +1153,7 @@ void TestMerge::testMergeDuplicateCustomIcons()
|
||||
|
||||
QVERIFY(dbDestination->metadata()->hasCustomIcon(customIconId));
|
||||
QCOMPARE(dbDestination->metadata()->customIconsOrder().count(), 1);
|
||||
QCOMPARE(dbDestination->metadata()->customIcon(customIconId), customIcon2);
|
||||
}
|
||||
|
||||
void TestMerge::testMetadata()
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
*/
|
||||
|
||||
#include "TestGuiPixmaps.h"
|
||||
#include "core/DatabaseIcons.h"
|
||||
#include "core/Metadata.h"
|
||||
|
||||
#include <QTest>
|
||||
|
||||
#include "core/Group.h"
|
||||
#include "crypto/Crypto.h"
|
||||
#include <QTest>
|
||||
#include "gui/DatabaseIcons.h"
|
||||
#include "gui/Icons.h"
|
||||
|
||||
void TestGuiPixmaps::initTestCase()
|
||||
{
|
||||
@@ -30,55 +32,53 @@ void TestGuiPixmaps::initTestCase()
|
||||
|
||||
void TestGuiPixmaps::testDatabaseIcons()
|
||||
{
|
||||
// check if the cache works correctly
|
||||
auto pixmap = databaseIcons()->icon(0);
|
||||
auto pixmapCached = databaseIcons()->icon(0);
|
||||
QCOMPARE(pixmapCached.cacheKey(), pixmap.cacheKey());
|
||||
QVERIFY(!databaseIcons()->icon(0).isNull());
|
||||
}
|
||||
|
||||
void TestGuiPixmaps::testEntryIcons()
|
||||
{
|
||||
QScopedPointer<Database> db(new Database());
|
||||
Entry* entry = new Entry();
|
||||
auto entry = new Entry();
|
||||
entry->setGroup(db->rootGroup());
|
||||
|
||||
// Test setting standard icon
|
||||
entry->setIcon(10);
|
||||
auto pixmap = entry->iconPixmap();
|
||||
QCOMPARE(pixmap.cacheKey(), databaseIcons()->icon(10).cacheKey());
|
||||
auto pixmap = Icons::entryIconPixmap(entry);
|
||||
QVERIFY(pixmap.toImage() == databaseIcons()->icon(10).toImage());
|
||||
|
||||
// Test setting custom icon
|
||||
QUuid iconUuid = QUuid::createUuid();
|
||||
QImage icon(2, 1, QImage::Format_RGB32);
|
||||
icon.setPixel(0, 0, qRgb(0, 0, 0));
|
||||
icon.setPixel(1, 0, qRgb(0, 0, 50));
|
||||
db->metadata()->addCustomIcon(iconUuid, icon);
|
||||
db->metadata()->addCustomIcon(iconUuid, Icons::saveToBytes(icon));
|
||||
QCOMPARE(db->metadata()->customIconsOrder().count(), 1);
|
||||
|
||||
entry->setIcon(iconUuid);
|
||||
pixmap = entry->iconPixmap();
|
||||
QCOMPARE(pixmap.cacheKey(), db->metadata()->customIconPixmap(iconUuid).cacheKey());
|
||||
// Confirm the icon is the same as that stored in the database
|
||||
QVERIFY(Icons::entryIconPixmap(entry).toImage() == Icons::customIconPixmap(db.data(), iconUuid).toImage());
|
||||
}
|
||||
|
||||
void TestGuiPixmaps::testGroupIcons()
|
||||
{
|
||||
QScopedPointer<Database> db(new Database());
|
||||
Group* group = db->rootGroup();
|
||||
auto group = db->rootGroup();
|
||||
|
||||
// Test setting standard icon
|
||||
group->setIcon(10);
|
||||
auto pixmap = group->iconPixmap();
|
||||
QCOMPARE(pixmap.cacheKey(), databaseIcons()->icon(10).cacheKey());
|
||||
auto pixmap = Icons::groupIconPixmap(group);
|
||||
QVERIFY(pixmap.toImage() == databaseIcons()->icon(10).toImage());
|
||||
|
||||
// Test setting custom icon
|
||||
QUuid iconUuid = QUuid::createUuid();
|
||||
QImage icon(2, 1, QImage::Format_RGB32);
|
||||
icon.setPixel(0, 0, qRgb(0, 0, 0));
|
||||
icon.setPixel(1, 0, qRgb(0, 0, 50));
|
||||
db->metadata()->addCustomIcon(iconUuid, icon);
|
||||
db->metadata()->addCustomIcon(iconUuid, Icons::saveToBytes(icon));
|
||||
|
||||
group->setIcon(iconUuid);
|
||||
pixmap = group->iconPixmap();
|
||||
QCOMPARE(pixmap.cacheKey(), db->metadata()->customIconPixmap(iconUuid).cacheKey());
|
||||
// Confirm the icon is the same as that stored in the database
|
||||
QVERIFY(Icons::groupIconPixmap(group).toImage() == Icons::customIconPixmap(db.data(), iconUuid).toImage());
|
||||
}
|
||||
|
||||
QTEST_MAIN(TestGuiPixmaps)
|
||||
|
||||
Reference in New Issue
Block a user