Changeset View
Changeset View
Standalone View
Standalone View
autotests/unit/engine/phraseanditeratortest.cpp
Show All 31 Lines | |||||
32 | private Q_SLOTS: | 32 | private Q_SLOTS: | ||
33 | void test(); | 33 | void test(); | ||
34 | void testNullIterators(); | 34 | void testNullIterators(); | ||
35 | }; | 35 | }; | ||
36 | 36 | | |||
37 | void PhraseAndIteratorTest::test() | 37 | void PhraseAndIteratorTest::test() | ||
38 | { | 38 | { | ||
39 | // Term 1 | 39 | // Term 1 | ||
40 | PositionInfo pi1; | 40 | PositionInfo pi2_1; // pi<doc_id>_<term> | ||
41 | pi1.docId = 2; | 41 | pi2_1.docId = 2; | ||
42 | pi1.positions = {5, 9}; | 42 | pi2_1.positions = {5, 9}; | ||
43 | 43 | | |||
44 | PositionInfo pi2; | 44 | PositionInfo pi4_1; | ||
45 | pi2.docId = 4; | 45 | pi4_1.docId = 4; | ||
46 | pi2.positions = {4, 2}; | 46 | pi4_1.positions = {4, 2}; | ||
47 | 47 | | |||
48 | QVector<PositionInfo> vec1; | 48 | QVector<PositionInfo> vec1; | ||
49 | vec1 << pi1 << pi2; | 49 | vec1 << pi2_1 << pi4_1; | ||
50 | 50 | | |||
51 | // Term 2 | 51 | // Term 2 | ||
52 | PositionInfo pi3; | 52 | PositionInfo pi2_2; | ||
53 | pi3.docId = 2; | 53 | pi2_2.docId = 2; | ||
54 | pi3.positions = {6, 7}; | 54 | pi2_2.positions = {6, 7}; | ||
55 | 55 | | |||
56 | PositionInfo pi4; | 56 | PositionInfo pi4_2; | ||
57 | pi4.docId = 4; | 57 | pi4_2.docId = 4; | ||
58 | pi4.positions = {6, 2}; | 58 | pi4_2.positions = {6, 2}; | ||
59 | 59 | | |||
60 | PositionInfo pi5; | 60 | PositionInfo pi7_2; | ||
61 | pi5.docId = 7; | 61 | pi7_2.docId = 7; | ||
62 | pi5.positions = {1, 4, 2}; | 62 | pi7_2.positions = {1, 4, 2}; | ||
63 | 63 | | |||
64 | QVector<PositionInfo> vec2; | 64 | QVector<PositionInfo> vec2; | ||
65 | vec2 << pi3 << pi4 << pi5; | 65 | vec2 << pi2_2 << pi4_2 << pi7_2; | ||
66 | 66 | | |||
67 | VectorPositionInfoIterator* it1 = new VectorPositionInfoIterator(vec1); | 67 | VectorPositionInfoIterator* it1 = new VectorPositionInfoIterator(vec1); | ||
68 | VectorPositionInfoIterator* it2 = new VectorPositionInfoIterator(vec2); | 68 | VectorPositionInfoIterator* it2 = new VectorPositionInfoIterator(vec2); | ||
69 | 69 | | |||
70 | QVector<VectorPositionInfoIterator*> vec = {it1, it2}; | 70 | QVector<VectorPositionInfoIterator*> vec = {it1, it2}; | ||
71 | PhraseAndIterator it(vec); | 71 | PhraseAndIterator it(vec); | ||
72 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | 72 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | ||
73 | 73 | | |||
74 | // The Query is "term1 term2". term1 must appear one position before term2 | 74 | // The Query is "term1 term2". term1 must appear one position before term2 | ||
75 | QVector<quint64> result = {2}; | 75 | QVector<quint64> result = {2}; | ||
76 | for (quint64 val : result) { | 76 | for (quint64 val : result) { | ||
77 | QCOMPARE(it.next(), static_cast<quint64>(val)); | 77 | QCOMPARE(it.next(), static_cast<quint64>(val)); | ||
78 | QCOMPARE(it.docId(), static_cast<quint64>(val)); | 78 | QCOMPARE(it.docId(), static_cast<quint64>(val)); | ||
79 | } | 79 | } | ||
80 | QCOMPARE(it.next(), static_cast<quint64>(0)); | 80 | QCOMPARE(it.next(), static_cast<quint64>(0)); | ||
81 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | 81 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | ||
82 | } | 82 | } | ||
83 | 83 | | |||
84 | void PhraseAndIteratorTest::testNullIterators() | 84 | void PhraseAndIteratorTest::testNullIterators() | ||
85 | { | 85 | { | ||
86 | // Term 1 | 86 | // Term 1 | ||
87 | PositionInfo pi1; | 87 | PositionInfo pi2_1; | ||
88 | pi1.docId = 2; | 88 | pi2_1.docId = 2; | ||
89 | pi1.positions = {5, 9}; | 89 | pi2_1.positions = {5, 9}; | ||
90 | 90 | | |||
91 | QVector<PositionInfo> vec1; | 91 | QVector<PositionInfo> vec1; | ||
92 | vec1 << pi1; | 92 | vec1 << pi2_1; | ||
93 | 93 | | |||
94 | // Term 2 | 94 | // Term 2 | ||
95 | PositionInfo pi2; | 95 | PositionInfo pi2_2; | ||
96 | pi2.docId = 2; | 96 | pi2_2.docId = 2; | ||
97 | pi2.positions = {6, 7}; | 97 | pi2_2.positions = {6, 7}; | ||
98 | 98 | | |||
99 | QVector<PositionInfo> vec2; | 99 | QVector<PositionInfo> vec2; | ||
100 | vec2 << pi2; | 100 | vec2 << pi2_2; | ||
101 | 101 | | |||
102 | VectorPositionInfoIterator* it1 = new VectorPositionInfoIterator(vec1); | 102 | VectorPositionInfoIterator* it1 = new VectorPositionInfoIterator(vec1); | ||
103 | VectorPositionInfoIterator* it2 = new VectorPositionInfoIterator(vec2); | 103 | VectorPositionInfoIterator* it2 = new VectorPositionInfoIterator(vec2); | ||
104 | 104 | | |||
105 | QVector<VectorPositionInfoIterator*> vec = {it1, nullptr, it2}; | 105 | QVector<VectorPositionInfoIterator*> vec = {it1, nullptr, it2}; | ||
106 | PhraseAndIterator it(vec); | 106 | PhraseAndIterator it(vec); | ||
107 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | 107 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | ||
108 | QCOMPARE(it.next(), static_cast<quint64>(0)); | 108 | QCOMPARE(it.next(), static_cast<quint64>(0)); | ||
109 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | 109 | QCOMPARE(it.docId(), static_cast<quint64>(0)); | ||
110 | } | 110 | } | ||
111 | 111 | | |||
112 | QTEST_MAIN(PhraseAndIteratorTest) | 112 | QTEST_MAIN(PhraseAndIteratorTest) | ||
113 | 113 | | |||
114 | #include "phraseanditeratortest.moc" | 114 | #include "phraseanditeratortest.moc" |