summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/storage_common.cpp3
-rw-r--r--tests/storagetest.cpp14
2 files changed, 16 insertions, 1 deletions
diff --git a/common/storage_common.cpp b/common/storage_common.cpp
index 0b9d324..4ca484a 100644
--- a/common/storage_common.cpp
+++ b/common/storage_common.cpp
@@ -153,8 +153,9 @@ bool Storage::isInternalKey(const QByteArray &key)
153 153
154QByteArray Storage::assembleKey(const QByteArray &key, qint64 revision) 154QByteArray Storage::assembleKey(const QByteArray &key, qint64 revision)
155{ 155{
156 Q_ASSERT(revision <= 9999);
156 Q_ASSERT(key.size() == 38); 157 Q_ASSERT(key.size() == 38);
157 return key + QByteArray::number(revision); 158 return key + QByteArray::number(revision).rightJustified(4, '0', false);
158} 159}
159 160
160QByteArray Storage::uidFromKey(const QByteArray &key) 161QByteArray Storage::uidFromKey(const QByteArray &key)
diff --git a/tests/storagetest.cpp b/tests/storagetest.cpp
index 31809ce..ee6900d 100644
--- a/tests/storagetest.cpp
+++ b/tests/storagetest.cpp
@@ -436,6 +436,20 @@ private slots:
436 QCOMPARE(Sink::Storage::getTypeFromRevision(transaction, 1), QByteArray("type")); 436 QCOMPARE(Sink::Storage::getTypeFromRevision(transaction, 1), QByteArray("type"));
437 QCOMPARE(Sink::Storage::getUidFromRevision(transaction, 1), QByteArray("uid")); 437 QCOMPARE(Sink::Storage::getUidFromRevision(transaction, 1), QByteArray("uid"));
438 } 438 }
439
440 void testRecordRevisionSorting()
441 {
442 Sink::Storage store(testDataPath, dbName, Sink::Storage::ReadWrite);
443 auto transaction = store.createTransaction(Sink::Storage::ReadWrite);
444 QByteArray result;
445 auto db = transaction.openDatabase("test", nullptr, false);
446 const auto uid = "{c5d06a9f-1534-4c52-b8ea-415db68bdadf}";
447 //Ensure we can sort 1 and 10 properly (by default string comparison 10 comes before 6)
448 db.write(Sink::Storage::assembleKey(uid, 6), "value1");
449 db.write(Sink::Storage::assembleKey(uid, 10), "value2");
450 db.findLatest(uid, [&](const QByteArray &key, const QByteArray &value) { result = value; });
451 QCOMPARE(result, QByteArray("value2"));
452 }
439}; 453};
440 454
441QTEST_MAIN(StorageTest) 455QTEST_MAIN(StorageTest)