| | 2205 | |
| | 2206 | // Check that valueweightsource handles last_docid of 0xffffffff. |
| | 2207 | DEFINE_TESTCASE(valueweightsource5, writable && valuestats) { |
| | 2208 | // FIXME: PostingSource doesn't currently work well with multi databases |
| | 2209 | // but we should try to resolve that issue. |
| | 2210 | SKIP_TEST_FOR_BACKEND("multi"); |
| | 2211 | // inmemory's memory use is currently O(last_docid)! |
| | 2212 | SKIP_TEST_FOR_BACKEND("inmemory"); |
| | 2213 | Xapian::WritableDatabase db = get_writable_database(); |
| | 2214 | Xapian::Document doc; |
| | 2215 | doc.add_value(1, Xapian::sortable_serialise(3.14)); |
| | 2216 | db.replace_document(1, doc); |
| | 2217 | db.replace_document(0xffffffff, doc); |
| | 2218 | db.flush(); |
| | 2219 | |
| | 2220 | Xapian::ValueWeightPostingSource src(db, 1); |
| | 2221 | src.next(0.0); |
| | 2222 | TEST(!src.at_end()); |
| | 2223 | TEST_EQUAL(src.get_docid(), 1); |
| | 2224 | src.next(0.0); |
| | 2225 | TEST(!src.at_end()); |
| | 2226 | TEST_EQUAL(src.get_docid(), 0xffffffff); |
| | 2227 | src.next(0.0); |
| | 2228 | TEST(src.at_end()); |
| | 2229 | |
| | 2230 | return true; |
| | 2231 | } |