diff --git a/src/core/Uuid.cpp b/src/core/Uuid.cpp
index dc39d2d01..850e2d7b3 100644
--- a/src/core/Uuid.cpp
+++ b/src/core/Uuid.cpp
@@ -70,6 +70,12 @@ bool Uuid::operator!=(const Uuid& other) const
return !operator==(other);
}
+Uuid Uuid::fromBase64(const QString& str)
+{
+ QByteArray data = QByteArray::fromBase64(str.toAscii());
+ return Uuid(data);
+}
+
uint qHash(const Uuid& key)
{
return qHash(key.toByteArray());
diff --git a/src/core/Uuid.h b/src/core/Uuid.h
index b8cc531b0..1916a0fa0 100644
--- a/src/core/Uuid.h
+++ b/src/core/Uuid.h
@@ -33,6 +33,7 @@ public:
bool operator==(const Uuid& other) const;
bool operator!=(const Uuid& other) const;
static const int length;
+ static Uuid fromBase64(const QString& str);
private:
QByteArray m_data;
diff --git a/tests/NewDatabase.xml b/tests/NewDatabase.xml
index af631970f..c4b12fb87 100644
--- a/tests/NewDatabase.xml
+++ b/tests/NewDatabase.xml
@@ -15,20 +15,26 @@
False
True
False
- True
+ False
+
+
+ ++vyI+daLk6omox4a6kQGA==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAACZJREFUOE9jbGBo+M9ACQAZQAlmoEQz2PWjBoyGwWg6AGdCivMCAKxN4SAQ+6S+AAAAAElFTkSuQmCC
+
+
True
- 7PAwxNhPaE2klutz45i2xg==
- 2010-08-08T17:24:17Z
+ 6w7wZdhAp0qVlXjkemuCYw==
+ 2010-08-25T16:12:57Z
AAAAAAAAAAAAAAAAAAAAAA==
2010-08-08T17:24:19Z
- zKuE27EWr0mlU75b2SRkTQ==
- zKuE27EWr0mlU75b2SRkTQ==
+ lmU+9n0aeESKZvcEze+bRg==
+ lmU+9n0aeESKZvcEze+bRg==
- zKuE27EWr0mlU75b2SRkTQ==
+ lmU+9n0aeESKZvcEze+bRg==
NewDatabase
49
@@ -38,33 +44,29 @@
2010-08-09T09:09:44Z
2010-08-08T17:24:17Z
False
- 2
+ 52
2010-08-08T17:24:27Z
True
null
null
- QW4G0r/z90qql4iKZ0RwlA==
+ +wSUOv6qf0OzW8/ZHAs2sA==
- QW4G0r/z90qql4iKZ0RwlA==
+ +wSUOv6qf0OzW8/ZHAs2sA==
0
- #0000FF
- #000000
- OMGAURL
+
+
+
- 2010-08-09T09:09:31Z
- 2010-08-08T17:24:53Z
- 2010-08-09T09:09:31Z
- 2011-08-08T17:25:58Z
- True
- 6
- 2010-08-08T17:24:53Z
+ 2010-08-25T16:19:25Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:19:25Z
+ 2010-08-25T16:12:57Z
+ False
+ 8
+ 2010-08-25T16:13:54Z
-
- customfield
- customfield value
-
Notes
Notes
@@ -75,84 +77,292 @@
Title
- Sample Entry
+ Sample Entry 1
URL
- bleh
+
UserName
User Name
+
+ False
+ 0
+
+ Target Window
+
+
+
+
+
+ +wSUOv6qf0OzW8/ZHAs2sA==
+ 0
+
+
+
+
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:15:37Z
+ 2010-08-25T16:12:57Z
+ False
+ 3
+ 2010-08-25T16:13:54Z
+
+
+ Notes
+ Notes
+
+
+ Password
+ Password
+
+
+ Title
+ Sample Entry
+
+
+ URL
+ http://www.somesite.com/
+
+
+ UserName
+ User Name
+
+
+ True
+ 0
+
+ Target Window
+ {USERNAME}{TAB}{PASSWORD}{TAB}{ENTER}
+
+
+
+
+ +wSUOv6qf0OzW8/ZHAs2sA==
+ 0
+
+
+
+
+ 2010-08-25T16:15:43Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:18:40Z
+ 2010-08-25T16:12:57Z
+ False
+ 7
+ 2010-08-25T16:13:54Z
+
+
+ Notes
+ Notes
+
+
+ Password
+ Password
+
+
+ Title
+ Sample Entry 1
+
+
+ URL
+ http://www.somesite.com/
+
+
+ UserName
+ User Name
+
+
+ True
+ 0
+
+ Target Window
+ {USERNAME}{TAB}{PASSWORD}{TAB}{ENTER}
+
+
+
+
+
+
+ 4jbADG37hkiLh2O0qUdaOQ==
+ 0
+ ++vyI+daLk6omox4a6kQGA==
+ #FF0000
+ #FFFF00
+ http://override.net/
+
+ 2010-08-25T16:20:24Z
+ 2010-08-25T16:15:45Z
+ 2010-08-25T16:20:24Z
+ 2010-09-01T16:16:20Z
+ True
+ 7
+ 2010-08-25T16:15:45Z
+
+
+ CustomString
+ isavalue
+
+
+ Notes
+
+
+
+ Password
+ Jer60Hz8o9XHvxBGcRqT
+
+
+ Protected String
+ y
+
+
+ Title
+ Sample Entry 2
+
+
+ URL
+ http://www.keepassx.org/
+
+
+ UserName
+ notDEFUSERNAME
+
+
+ testattach.txt
+ NDI=
+
True
1
{USERNAME}{TAB}{PASSWORD}{ENTER}
Target Window
- {USERNAME}{TAB}{PASSWORD}{TAB}{ENTER}
+ {Title}{UserName}
- Edit Entry
- {Title}{UserName}{UserName}
+ Target Window 2
+ {Title}{UserName} test
- abLbFtNUfEi5TmbaxiW6yg==
+ AaUYVdXsI02h4T1RiAlgtg==
General
-
+ Group Notez
48
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:17Z
- False
- 0
- 2010-08-08T17:24:53Z
+ 2010-08-25T16:22:20Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:22:29Z
+ 2010-08-20T16:21:51Z
+ True
+ 12
+ 2010-08-25T16:13:54Z
True
-
- null
- null
+ {Password}{ENTER}
+ true
+ false
AAAAAAAAAAAAAAAAAAAAAA==
- u1lTRAICOkWv5QSl2xyU8w==
+ 1h4NtL5DK0yVyvaEnN//4A==
Windows
38
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:53Z
- 2010-08-08T17:24:17Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:22:24Z
+ 2010-08-25T16:12:57Z
False
- 0
- 2010-08-08T17:24:53Z
+ 15
+ 2010-08-25T16:13:54Z
- True
+ False
null
null
AAAAAAAAAAAAAAAAAAAAAA==
+
+ HoYE/BjLfUSW257pCHJ/eA==
+ Subsub
+
+ 68
+
+ 2010-08-25T16:21:33Z
+ 2010-08-25T16:14:31Z
+ 2010-08-25T16:21:41Z
+ 2010-08-25T16:21:21Z
+ False
+ 8
+ 2010-08-25T16:14:31Z
+
+ True
+
+ null
+ null
+ AAAAAAAAAAAAAAAAAAAAAA==
+
+ GZpdQvGXOU2kaKRL/IVAGg==
+ 0
+
+
+
+
+ 2010-08-25T16:21:15Z
+ 2010-08-25T16:20:45Z
+ 2010-08-25T16:21:41Z
+ 2010-08-25T16:12:57Z
+ False
+ 3
+ 2010-08-25T16:20:45Z
+
+
+ Notes
+
+
+
+ Password
+
+
+
+ Title
+ Subsub Entry
+
+
+ URL
+
+
+
+ UserName
+
+
+
+ True
+ 0
+
+
+
+
- 7PAwxNhPaE2klutz45i2xg==
+ 6w7wZdhAp0qVlXjkemuCYw==
Recycle Bin
43
- 2010-08-09T09:09:44Z
- 2010-08-09T09:09:44Z
- 2010-08-09T09:09:44Z
- 2010-08-09T09:07:16Z
+ 2010-08-25T16:13:57Z
+ 2010-08-25T16:13:57Z
+ 2010-08-25T16:20:55Z
+ 2010-08-25T16:12:57Z
False
- 1
- 2010-08-09T09:09:44Z
+ 10
+ 2010-08-25T16:13:57Z
True
@@ -160,19 +370,19 @@
false
AAAAAAAAAAAAAAAAAAAAAA==
- KIeQe6yDN0SbjIJ83NB++Q==
+ Wh3kfvnEqE2VqK+5KIiPXg==
0
- 2010-08-09T09:09:40Z
- 2010-08-09T09:09:37Z
- 2010-08-09T09:09:44Z
- 2010-08-09T09:07:16Z
+ 2010-08-25T16:20:32Z
+ 2010-08-25T16:20:27Z
+ 2010-08-25T16:20:37Z
+ 2010-08-25T16:12:57Z
False
2
- 2010-08-09T09:09:44Z
+ 2010-08-25T16:20:37Z
Notes
@@ -180,11 +390,11 @@
Password
- 5Ciyy3kcVSPFUFqTuK1o
+ gJBbkrCsiLBftfocQbNM
Title
- test
+ delentry
URL
@@ -200,8 +410,37 @@
+
+ KtRKIna41ky8WkqrAUXPig==
+ Network
+
+ 3
+
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:13:54Z
+ 2010-08-25T16:20:55Z
+ 2010-08-25T16:12:57Z
+ False
+ 3
+ 2010-08-25T16:14:09Z
+
+ True
+
+ null
+ null
+ AAAAAAAAAAAAAAAAAAAAAA==
+
-
+
+
+ 5K/bzWCSmkCv5OZxYl4N/w==
+ 2010-08-25T16:14:12Z
+
+
+ 80h8uSNWgkKhKCp1TgXF7g==
+ 2010-08-25T16:14:14Z
+
+
\ No newline at end of file
diff --git a/tests/TestParser.cpp b/tests/TestParser.cpp
index 9190d765e..d085cf60a 100644
--- a/tests/TestParser.cpp
+++ b/tests/TestParser.cpp
@@ -22,6 +22,17 @@
#include "core/Parser.h"
#include "config-keepassx-tests.h"
+namespace QTest {
+ template<>
+ char *toString(const Uuid &uuid)
+ {
+ QByteArray ba = "Uuid(";
+ ba += uuid.toBase64();
+ ba += ")";
+ return qstrdup(ba.data());
+ }
+}
+
class TestParser : public QObject
{
Q_OBJECT
@@ -29,7 +40,14 @@ class TestParser : public QObject
private Q_SLOTS:
void initTestCase();
void testMetadata();
- void testGroups();
+ void testCustomIcon();
+ void testGroupRoot();
+ void testGroup1();
+ void testGroup2();
+ void testEntry1();
+ void testEntry2();
+ void testEntryHistory();
+ void testDeletedObjects();
private:
QDateTime genDT(int year, int month, int day, int hour, int min, int second);
@@ -67,11 +85,11 @@ void TestParser::testMetadata()
QCOMPARE(m_db->metadata()->protectPassword(), false);
QCOMPARE(m_db->metadata()->protectUrl(), true);
QCOMPARE(m_db->metadata()->protectNotes(), false);
- QCOMPARE(m_db->metadata()->autoEnableVisualHiding(), true);
+ QCOMPARE(m_db->metadata()->autoEnableVisualHiding(), false);
QCOMPARE(m_db->metadata()->recycleBinEnabled(), true);
QVERIFY(m_db->metadata()->recycleBin() != 0);
QCOMPARE(m_db->metadata()->recycleBin()->name(), QString("Recycle Bin"));
- QCOMPARE(m_db->metadata()->recycleBinChanged(), genDT(2010, 8, 8, 17, 24, 17));
+ QCOMPARE(m_db->metadata()->recycleBinChanged(), genDT(2010, 8, 25, 16, 12, 57));
QVERIFY(m_db->metadata()->entryTemplatesGroup() == 0);
QCOMPARE(m_db->metadata()->entryTemplatesGroupChanged(), genDT(2010, 8, 8, 17, 24, 19));
QVERIFY(m_db->metadata()->lastSelectedGroup() != 0);
@@ -79,26 +97,215 @@ void TestParser::testMetadata()
QVERIFY(m_db->metadata()->lastTopVisibleGroup() == m_db->metadata()->lastSelectedGroup());
}
-void TestParser::testGroups()
+void TestParser::testCustomIcon()
{
- QVERIFY(m_db->rootGroup() != 0);
- QCOMPARE(m_db->rootGroup()->name(), QString("NewDatabase"));
- QCOMPARE(m_db->rootGroup()->uuid().toBase64(), QString("zKuE27EWr0mlU75b2SRkTQ=="));
- QVERIFY(m_db->rootGroup()->isExpanded());
- TimeInfo ti = m_db->rootGroup()->timeInfo();
+ QCOMPARE(m_db->metadata()->customIcons().size(), 1);
+ Uuid uuid = Uuid::fromBase64("++vyI+daLk6omox4a6kQGA==");
+ QVERIFY(m_db->metadata()->customIcons().contains(uuid));
+ const QImage& img = m_db->metadata()->customIcons()[uuid];
+ QCOMPARE(img.width(), 16);
+ QCOMPARE(img.height(), 16);
+ for (int x=0; x<16; x++) {
+ for (int y=0; y<16; y++) {
+ QRgb rgb = img.pixel(x, y);
+ QCOMPARE(qRed(rgb), 128);
+ QCOMPARE(qGreen(rgb), 0);
+ QCOMPARE(qBlue(rgb), 128);
+ }
+ }
+}
+
+void TestParser::testGroupRoot()
+{
+ const Group* group = m_db->rootGroup();
+ QVERIFY(group);
+ QCOMPARE(group->uuid().toBase64(), QString("lmU+9n0aeESKZvcEze+bRg=="));
+ QCOMPARE(group->name(), QString("NewDatabase"));
+ QCOMPARE(group->notes(), QString(""));
+ QCOMPARE(group->iconNumber(), 49);
+ QCOMPARE(group->iconUuid(), Uuid());
+ QVERIFY(group->isExpanded());
+ TimeInfo ti = group->timeInfo();
QCOMPARE(ti.lastModificationTime(), genDT(2010, 8, 8, 17, 24, 27));
QCOMPARE(ti.creationTime(), genDT(2010, 8, 7, 17, 24, 27));
QCOMPARE(ti.lastAccessTime(), genDT(2010, 8, 9, 9, 9, 44));
QCOMPARE(ti.expiryTime(), genDT(2010, 8, 8, 17, 24, 17));
QVERIFY(!ti.expires());
- QCOMPARE(ti.usageCount(), 2);
+ QCOMPARE(ti.usageCount(), 52);
QCOMPARE(ti.locationChanged(), genDT(2010, 8, 8, 17, 24, 27));
+ QCOMPARE(group->defaultAutoTypeSequence(), QString(""));
+ QCOMPARE(group->autoTypeEnabled(), -1);
+ QCOMPARE(group->searchingEnabed(), -1);
+ QCOMPARE(group->lastTopVisibleEntry()->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
- QCOMPARE(m_db->rootGroup()->children().size(), 3);
- QCOMPARE(m_db->rootGroup()->children().at(0)->uuid().toBase64(), QString("abLbFtNUfEi5TmbaxiW6yg=="));
- QCOMPARE(m_db->rootGroup()->children().at(1)->uuid().toBase64(), QString("u1lTRAICOkWv5QSl2xyU8w=="));
- QCOMPARE(m_db->rootGroup()->children().at(2)->uuid().toBase64(), QString("7PAwxNhPaE2klutz45i2xg=="));
+ QCOMPARE(group->children().size(), 3);
QVERIFY(m_db->metadata()->recycleBin() == m_db->rootGroup()->children().at(2));
+
+ QCOMPARE(group->entries().size(), 2);
+}
+
+void TestParser::testGroup1()
+{
+ const Group* group = m_db->rootGroup()->children().at(0);
+
+ QCOMPARE(group->uuid().toBase64(), QString("AaUYVdXsI02h4T1RiAlgtg=="));
+ QCOMPARE(group->name(), QString("General"));
+ QCOMPARE(group->notes(), QString("Group Notez"));
+ QCOMPARE(group->iconNumber(), 48);
+ QCOMPARE(group->iconUuid(), Uuid());
+ QCOMPARE(group->isExpanded(), true);
+ QCOMPARE(group->defaultAutoTypeSequence(), QString("{Password}{ENTER}"));
+ QCOMPARE(group->autoTypeEnabled(), 1);
+ QCOMPARE(group->searchingEnabed(), 0);
+ QVERIFY(!group->lastTopVisibleEntry());
+}
+
+void TestParser::testGroup2()
+{
+ const Group* group = m_db->rootGroup()->children().at(1);
+
+ QCOMPARE(group->uuid().toBase64(), QString("1h4NtL5DK0yVyvaEnN//4A=="));
+ QCOMPARE(group->name(), QString("Windows"));
+ QCOMPARE(group->isExpanded(), false);
+
+ QCOMPARE(group->children().size(), 1);
+ const Group* child = group->children().first();
+
+ QCOMPARE(child->uuid().toBase64(), QString("HoYE/BjLfUSW257pCHJ/eA=="));
+ QCOMPARE(child->name(), QString("Subsub"));
+ QCOMPARE(child->entries().size(), 1);
+
+ const Entry* entry = child->entries().first();
+ QCOMPARE(entry->uuid().toBase64(), QString("GZpdQvGXOU2kaKRL/IVAGg=="));
+ QCOMPARE(entry->title(), QString("Subsub Entry"));
+}
+
+void TestParser::testEntry1()
+{
+ const Entry* entry = m_db->rootGroup()->entries().at(0);
+
+ QCOMPARE(entry->uuid().toBase64(), QString("+wSUOv6qf0OzW8/ZHAs2sA=="));
+ QCOMPARE(entry->iconNumber(), 0);
+ QCOMPARE(entry->iconUuid(), Uuid());
+ QVERIFY(!entry->foregroundColor().isValid());
+ QVERIFY(!entry->backgroundColor().isValid());
+ QCOMPARE(entry->overrideUrl(), QString(""));
+
+ const TimeInfo ti = entry->timeInfo();
+ QCOMPARE(ti.lastModificationTime(), genDT(2010, 8, 25, 16, 19, 25));
+ QCOMPARE(ti.creationTime(), genDT(2010, 8, 25, 16, 13, 54));
+ QCOMPARE(ti.lastAccessTime(), genDT(2010, 8, 25, 16, 19, 25));
+ QCOMPARE(ti.expiryTime(), genDT(2010, 8, 25, 16, 12, 57));
+ QVERIFY(!ti.expires());
+ QCOMPARE(ti.usageCount(), 8);
+ QCOMPARE(ti.locationChanged(), genDT(2010, 8, 25, 16, 13, 54));
+
+ QHash attrs = entry->attributes();
+ QCOMPARE(attrs.take("Notes"), QString("Notes"));
+ QCOMPARE(attrs.take("Password"), QString("Password"));
+ QCOMPARE(attrs.take("Title"), QString("Sample Entry 1"));
+ QCOMPARE(attrs.take("URL"), QString(""));
+ QCOMPARE(attrs.take("UserName"), QString("User Name"));
+ QVERIFY(attrs.isEmpty());
+
+ QCOMPARE(entry->title(), entry->attributes().value("Title"));
+ QCOMPARE(entry->url(), entry->attributes().value("URL"));
+ QCOMPARE(entry->username(), entry->attributes().value("UserName"));
+ QCOMPARE(entry->password(), entry->attributes().value("Password"));
+ QCOMPARE(entry->notes(), entry->attributes().value("Notes"));
+
+ QCOMPARE(entry->attachments().size(), 0);
+ QCOMPARE(entry->autoTypeEnabled(), false);
+ QCOMPARE(entry->autoTypeObfuscation(), 0);
+ QCOMPARE(entry->defaultAutoTypeSequence(), QString(""));
+ QCOMPARE(entry->autoTypeAssociations().size(), 1);
+ const AutoTypeAssociation assoc1 = entry->autoTypeAssociations().at(0);
+ QCOMPARE(assoc1.window, QString("Target Window"));
+ QCOMPARE(assoc1.sequence, QString(""));
+}
+
+void TestParser::testEntry2()
+{
+ const Entry* entry = m_db->rootGroup()->entries().at(1);
+
+ QCOMPARE(entry->uuid().toBase64(), QString("4jbADG37hkiLh2O0qUdaOQ=="));
+ QCOMPARE(entry->iconNumber(), 0);
+ QCOMPARE(entry->iconUuid().toBase64(), QString("++vyI+daLk6omox4a6kQGA=="));
+ // TODO test entry->icon()
+ QCOMPARE(entry->foregroundColor(), QColor(255, 0, 0));
+ QCOMPARE(entry->backgroundColor(), QColor(255, 255, 0));
+ QCOMPARE(entry->overrideUrl(), QString("http://override.net/"));
+
+ const TimeInfo ti = entry->timeInfo();
+ QCOMPARE(ti.usageCount(), 7);
+
+ QHash attrs = entry->attributes();
+ QCOMPARE(attrs.take("CustomString"), QString("isavalue"));
+ QCOMPARE(attrs.take("Notes"), QString(""));
+ QCOMPARE(attrs.take("Password"), QString("Jer60Hz8o9XHvxBGcRqT"));
+ QCOMPARE(attrs.take("Protected String"), QString("y")); // TODO should have a protection attribute
+ QCOMPARE(attrs.take("Title"), QString("Sample Entry 2"));
+ QCOMPARE(attrs.take("URL"), QString("http://www.keepassx.org/"));
+ QCOMPARE(attrs.take("UserName"), QString("notDEFUSERNAME"));
+ QVERIFY(attrs.isEmpty());
+
+ QCOMPARE(entry->attachments().size(), 1);
+ QCOMPARE(QString(entry->attachments().value("testattach.txt")), QString("42"));
+
+ QCOMPARE(entry->autoTypeEnabled(), true);
+ QCOMPARE(entry->autoTypeObfuscation(), 1);
+ QCOMPARE(entry->defaultAutoTypeSequence(), QString("{USERNAME}{TAB}{PASSWORD}{ENTER}"));
+ QCOMPARE(entry->autoTypeAssociations().size(), 2);
+ const AutoTypeAssociation assoc1 = entry->autoTypeAssociations().at(0);
+ QCOMPARE(assoc1.window, QString("Target Window"));
+ QCOMPARE(assoc1.sequence, QString("{Title}{UserName}"));
+ const AutoTypeAssociation assoc2 = entry->autoTypeAssociations().at(1);
+ QCOMPARE(assoc2.window, QString("Target Window 2"));
+ QCOMPARE(assoc2.sequence, QString("{Title}{UserName} test"));
+}
+
+void TestParser::testEntryHistory()
+{
+ const Entry* entryMain = m_db->rootGroup()->entries().first();
+ QCOMPARE(entryMain->historyItems().size(), 2);
+
+ {
+ const Entry* entry = entryMain->historyItems().at(0);
+ QCOMPARE(entry->uuid(), entryMain->uuid());
+ QVERIFY(!entry->parent());
+ QCOMPARE(entry->children().size(), 0);
+ QCOMPARE(entry->timeInfo().lastModificationTime(), genDT(2010, 8, 25, 16, 13, 54));
+ QCOMPARE(entry->timeInfo().usageCount(), 3);
+ QCOMPARE(entry->title(), QString("Sample Entry"));
+ QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
+ }
+
+ {
+ const Entry* entry = entryMain->historyItems().at(1);
+ QCOMPARE(entry->uuid(), entryMain->uuid());
+ QVERIFY(!entry->parent());
+ QCOMPARE(entry->children().size(), 0);
+ QCOMPARE(entry->timeInfo().lastModificationTime(), genDT(2010, 8, 25, 16, 15, 43));
+ QCOMPARE(entry->timeInfo().usageCount(), 7);
+ QCOMPARE(entry->title(), QString("Sample Entry 1"));
+ QCOMPARE(entry->url(), QString("http://www.somesite.com/"));
+ }
+}
+
+void TestParser::testDeletedObjects()
+{
+ QList objList = m_db->deletedObjects();
+ DeletedObject delObj;
+
+ delObj = objList.takeFirst();
+ QCOMPARE(delObj.uuid.toBase64(), QString("5K/bzWCSmkCv5OZxYl4N/w=="));
+ QCOMPARE(delObj.deletionTime, genDT(2010, 8, 25, 16, 14, 12));
+
+ delObj = objList.takeFirst();
+ QCOMPARE(delObj.uuid.toBase64(), QString("80h8uSNWgkKhKCp1TgXF7g=="));
+ QCOMPARE(delObj.deletionTime, genDT(2010, 8, 25, 16, 14, 14));
+
+ QVERIFY(objList.isEmpty());
}
QTEST_MAIN(TestParser);