Removing QWidget dependency from src/core.

This commit is contained in:
louib
2021-03-13 14:07:49 -05:00
committed by Jonathan White
parent 6f5bbf7ad1
commit 004f2b6801
46 changed files with 298 additions and 313 deletions

View File

@@ -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"

View File

@@ -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);

View File

@@ -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()

View File

@@ -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()

View File

@@ -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()

View File

@@ -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)