Changeset View
Changeset View
Standalone View
Standalone View
autotests/integration/writetransactiontest.cpp
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Line(s) | 41 | void cleanup() { | |||
---|---|---|---|---|---|
42 | delete db; | 42 | delete db; | ||
43 | delete dir; | 43 | delete dir; | ||
44 | } | 44 | } | ||
45 | 45 | | |||
46 | void testAddDocument(); | 46 | void testAddDocument(); | ||
47 | void testAddDocumentTwoDocuments(); | 47 | void testAddDocumentTwoDocuments(); | ||
48 | void testAddAndRemoveOneDocument(); | 48 | void testAddAndRemoveOneDocument(); | ||
49 | void testAddAndReplaceOneDocument(); | 49 | void testAddAndReplaceOneDocument(); | ||
50 | void testIdempotentDocumentChange(); | ||||
50 | 51 | | |||
51 | void testRemoveRecursively(); | 52 | void testRemoveRecursively(); | ||
52 | void testDocumentId(); | 53 | void testDocumentId(); | ||
53 | void testTermPositions(); | 54 | void testTermPositions(); | ||
54 | private: | 55 | private: | ||
55 | QTemporaryDir* dir; | 56 | QTemporaryDir* dir; | ||
56 | Database* db; | 57 | Database* db; | ||
57 | }; | 58 | }; | ||
▲ Show 20 Lines • Show All 332 Lines • ▼ Show 20 Line(s) | 289 | { | |||
390 | } | 391 | } | ||
391 | { | 392 | { | ||
392 | Transaction tr(db, Transaction::ReadOnly); | 393 | Transaction tr(db, Transaction::ReadOnly); | ||
393 | DBState actualState = DBState::fromTransaction(&tr); | 394 | DBState actualState = DBState::fromTransaction(&tr); | ||
394 | QVERIFY(DBState::debugCompare(actualState, state)); | 395 | QVERIFY(DBState::debugCompare(actualState, state)); | ||
395 | } | 396 | } | ||
396 | } | 397 | } | ||
397 | 398 | | |||
399 | void WriteTransactionTest::testIdempotentDocumentChange() | ||||
400 | { | ||||
401 | const QByteArray url1(dir->path().toUtf8() + "/file1"); | ||||
402 | touchFile(url1); | ||||
403 | | ||||
404 | Document doc1 = createDocument(url1, 5, 1, {"a", "abc", "dab"}, {"file1"}, {}); | ||||
405 | Document doc2 = createDocument(url1, 5, 1, {"a", "abcd", "dab"}, {"file1"}, {}); | ||||
406 | quint64 id = doc1.id(); | ||||
407 | | ||||
408 | { | ||||
409 | Transaction tr(db, Transaction::ReadWrite); | ||||
410 | tr.addDocument(doc1); | ||||
411 | tr.commit(); | ||||
412 | } | ||||
413 | | ||||
414 | DBState state; | ||||
415 | state.postingDb = {{"a", {id}}, {"abc", {id}}, {"dab", {id}}, {"file1", {id}} }; | ||||
416 | state.positionDb = {}; | ||||
417 | state.docTermsDb = {{id, {"a", "abc", "dab"} }}; | ||||
418 | state.docFileNameTermsDb = {{id, {"file1"} }}; | ||||
419 | state.docXAttrTermsDb = {}; | ||||
420 | state.docTimeDb = {{id, DocumentTimeDB::TimeInfo(5, 1)}}; | ||||
421 | state.mtimeDb = {{5, id}}; | ||||
422 | | ||||
423 | { | ||||
424 | Transaction tr(db, Transaction::ReadOnly); | ||||
425 | DBState actualState = DBState::fromTransaction(&tr); | ||||
426 | QVERIFY(DBState::debugCompare(actualState, state)); | ||||
427 | } | ||||
428 | | ||||
429 | { | ||||
430 | Transaction tr(db, Transaction::ReadWrite); | ||||
431 | tr.replaceDocument(doc2, DocumentOperation::Everything); | ||||
432 | tr.replaceDocument(doc2, DocumentOperation::Everything); | ||||
433 | tr.commit(); | ||||
434 | } | ||||
435 | | ||||
436 | state.postingDb = {{"a", {id}}, {"abcd", {id}}, {"dab", {id}}, {"file1", {id}} }; | ||||
437 | state.docTermsDb = {{id, {"a", "abcd", "dab"} }}; | ||||
438 | | ||||
439 | { | ||||
440 | Transaction tr(db, Transaction::ReadOnly); | ||||
441 | DBState actualState = DBState::fromTransaction(&tr); | ||||
442 | QVERIFY(DBState::debugCompare(actualState, state)); | ||||
443 | } | ||||
444 | | ||||
445 | } | ||||
446 | | ||||
398 | QTEST_MAIN(WriteTransactionTest) | 447 | QTEST_MAIN(WriteTransactionTest) | ||
399 | 448 | | |||
400 | #include "writetransactiontest.moc" | 449 | #include "writetransactiontest.moc" |