diff options
author | Christian Kamm <kamm@incasoftware.de> | 2014-10-23 17:15:47 +0400 |
---|---|---|
committer | Christian Kamm <kamm@incasoftware.de> | 2014-10-23 17:15:47 +0400 |
commit | e5269a4151799ac442a47e011926feb98d7e5caa (patch) | |
tree | f2533edecd413ba79487e350d11f12962a9a3741 /test | |
parent | 81584c6d5162d19c6f810e04fbaaebea6c5da08b (diff) |
Add SyncJournalDB autotests.
There also was a bug in syncjournaldb: in some error conditions the
sql query wasn't reset properly. We now always reset a query before
calling bindValue.
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/testsyncjournaldb.h | 118 |
2 files changed, 119 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ad2a1e217..0868c2b27 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -28,6 +28,7 @@ endif(UNIX AND NOT APPLE) owncloud_add_test(CSyncSqlite "") owncloud_add_test(NetrcParser ../src/owncloudcmd/netrcparser.cpp) owncloud_add_test(OwnSql ../src/mirall/ownsql.cpp) +owncloud_add_test(SyncJournalDB ../src/mirall/syncjournaldb.cpp) diff --git a/test/testsyncjournaldb.h b/test/testsyncjournaldb.h new file mode 100644 index 000000000..88497c80c --- /dev/null +++ b/test/testsyncjournaldb.h @@ -0,0 +1,118 @@ +/* + * This software is in the public domain, furnished "as is", without technical + * support, and with no warranty, express or implied, as to its usefulness for + * any purpose. + * */ + +#ifndef MIRALL_TESTSYNCJOURNALDB_H +#define MIRALL_TESTSYNCJOURNALDB_H + +#include <QtTest> + +#include <sqlite3.h> + +#include "mirall/syncjournaldb.h" +#include "mirall/syncjournalfilerecord.h" + +using namespace Mirall; + +namespace { + +const char testdbC[] = "/tmp"; +} + +class TestSyncJournalDB : public QObject +{ + Q_OBJECT + +public: + TestSyncJournalDB() + : _db(testdbC) + { + } + + QDateTime dropMsecs(QDateTime time) + { + return Utility::qDateTimeFromTime_t(Utility::qDateTimeToTime_t(time)); + } + +private slots: + + void initTestCase() + { + } + + void cleanupTestCase() + { + } + + void testFileRecord() + { + SyncJournalFileRecord record = _db.getFileRecord("nonexistant"); + QVERIFY(!record.isValid()); + + record._path = "foo"; + record._inode = 1234; + record._modtime = dropMsecs(QDateTime::currentDateTime()); + record._type = 5; + record._etag = "789789"; + record._fileId = "abcd"; + record._remotePerm = "744"; + record._mode = -17; + QVERIFY(_db.setFileRecord(record)); + + SyncJournalFileRecord storedRecord = _db.getFileRecord("foo"); + QVERIFY(storedRecord == record); + + QVERIFY(_db.deleteFileRecord("foo")); + record = _db.getFileRecord("foo"); + QVERIFY(!record.isValid()); + } + + void testDownloadInfo() + { + typedef SyncJournalDb::DownloadInfo Info; + Info record = _db.getDownloadInfo("nonexistant"); + QVERIFY(!record._valid); + + record._errorCount = 5; + record._etag = "ABCDEF"; + record._valid = true; + record._tmpfile = "/tmp/foo"; + _db.setDownloadInfo("foo", record); + + Info storedRecord = _db.getDownloadInfo("foo"); + QVERIFY(storedRecord == record); + + _db.setDownloadInfo("foo", Info()); + Info wipedRecord = _db.getDownloadInfo("foo"); + QVERIFY(!wipedRecord._valid); + } + + void testUploadInfo() + { + typedef SyncJournalDb::UploadInfo Info; + Info record = _db.getUploadInfo("nonexistant"); + QVERIFY(!record._valid); + + record._errorCount = 5; + record._chunk = 12; + record._transferid = 812974891; + record._size = 12894789147; + record._modtime = dropMsecs(QDateTime::currentDateTime()); + record._valid = true; + _db.setUploadInfo("foo", record); + + Info storedRecord = _db.getUploadInfo("foo"); + QVERIFY(storedRecord == record); + + _db.setUploadInfo("foo", Info()); + Info wipedRecord = _db.getUploadInfo("foo"); + QVERIFY(!wipedRecord._valid); + } + +private: + SyncJournalDb _db; +}; + +#endif |