testcsyncsqlite.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*
  2. This software is in the public domain, furnished "as is", without technical
  3. support, and with no warranty, express or implied, as to its usefulness for
  4. any purpose.
  5. */
  6. #ifndef MIRALL_TESTCSYNCSQLITE_H
  7. #define MIRALL_TESTCSYNCSQLITE_H
  8. #include "csync_statedb.h"
  9. #include <QtTest>
  10. class TestCSyncSqlite : public QObject
  11. {
  12. Q_OBJECT
  13. private:
  14. typedef struct {
  15. struct {
  16. csync_auth_callback auth_function;
  17. csync_progress_callback progress_cb;
  18. void *userdata;
  19. } callbacks;
  20. c_strlist_t *excludes;
  21. struct {
  22. char *file;
  23. sqlite3 *db;
  24. int exists;
  25. int disabled;
  26. sqlite3_stmt* by_hash_stmt;
  27. sqlite3_stmt* by_fileid_stmt;
  28. sqlite3_stmt* by_inode_stmt;
  29. } statedb;
  30. } MY_CSYNC;
  31. MY_CSYNC _ctx;
  32. int _written;
  33. private slots:
  34. void initTestCase() {
  35. int rc;
  36. _written = 0;
  37. memset(&_ctx, 0, sizeof(MY_CSYNC));
  38. _ctx.statedb.file = "./test_journal.db";
  39. rc = csync_statedb_load((CSYNC*)(&_ctx), _ctx.statedb.file, &(_ctx.statedb.db));
  40. Q_ASSERT(rc == 0);
  41. }
  42. void testFullResult() {
  43. csync_file_stat_t *st = csync_statedb_get_stat_by_hash((CSYNC*)(&_ctx), 2081025720555645157 );
  44. QVERIFY(st);
  45. QCOMPARE( QString::number(st->phash), QString::number(2081025720555645157) );
  46. QCOMPARE( QString::number(st->pathlen), QString::number(13));
  47. QCOMPARE( QString::fromUtf8(st->path), QLatin1String("test2/zu/zuzu") );
  48. QCOMPARE( QString::number(st->inode), QString::number(1709554));
  49. QCOMPARE( QString::number(st->uid), QString::number(0));
  50. QCOMPARE( QString::number(st->gid), QString::number(0));
  51. QCOMPARE( QString::number(st->mode), QString::number(0));
  52. QCOMPARE( QString::number(st->modtime), QString::number(1384415006));
  53. QCOMPARE( QString::number(st->type), QString::number(2));
  54. QCOMPARE( QString::fromUtf8(st->etag), QLatin1String("52847f2090665"));
  55. QCOMPARE( QString::fromUtf8(st->file_id), QLatin1String("00000557525d5af3d9625"));
  56. }
  57. void testByHash() {
  58. csync_file_stat_t *st = csync_statedb_get_stat_by_hash((CSYNC*)(&_ctx), -7147279406142960289);
  59. QVERIFY(st);
  60. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("documents/c1"));
  61. csync_file_stat_free(st);
  62. st = csync_statedb_get_stat_by_hash((CSYNC*)(&_ctx), 5426481156826978940);
  63. QVERIFY(st);
  64. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("documents/c1/c2"));
  65. csync_file_stat_free(st);
  66. }
  67. void testByInode() {
  68. csync_file_stat_t *st = csync_statedb_get_stat_by_inode((CSYNC*)(&_ctx), 1709555);
  69. QVERIFY(st);
  70. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("test2/zu/zuzu/zuzuzu"));
  71. csync_file_stat_free(st);
  72. st = csync_statedb_get_stat_by_inode((CSYNC*)(&_ctx), 1706571);
  73. QVERIFY(st);
  74. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("Shared/for_kf/a2"));
  75. csync_file_stat_free(st);
  76. }
  77. void testByFileId() {
  78. csync_file_stat_t *st = csync_statedb_get_stat_by_file_id((CSYNC*)(&_ctx), "00000556525d5af3d9625");
  79. QVERIFY(st);
  80. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("test2/zu"));
  81. csync_file_stat_free(st);
  82. st = csync_statedb_get_stat_by_file_id((CSYNC*)(&_ctx), "-0000001525d5af3d9625");
  83. QVERIFY(st);
  84. QCOMPARE(QString::fromUtf8(st->path), QLatin1String("Shared"));
  85. csync_file_stat_free(st);
  86. }
  87. void testEtag() {
  88. char *etag = csync_statedb_get_etag((CSYNC*)(&_ctx), 7145399680328529363 );
  89. QCOMPARE( QString::fromUtf8(etag), QLatin1String("52847f208be09"));
  90. SAFE_FREE(etag);
  91. etag = csync_statedb_get_etag((CSYNC*)(&_ctx), -8148768149813301136);
  92. QCOMPARE( QString::fromUtf8(etag), QLatin1String("530d148493894"));
  93. SAFE_FREE(etag);
  94. }
  95. void cleanupTestCase() {
  96. csync_statedb_close((CSYNC*)(&_ctx), _written);
  97. }
  98. };
  99. #endif