From e74e7f5623cadc8461faaff6e6e021f260c33da0 Mon Sep 17 00:00:00 2001 From: Maneesh P M Date: Wed, 4 Aug 2021 12:36:00 +0530 Subject: [PATCH] Add unit test for incremental searching With this, we eventually want to see the usage of getResults giving a FAILING TEST. This happens because the second argument to getResults is NOT `end` of the range, but `maxResultCount` to retrieve. This will be fixed in the next commit. --- test/searcher.cpp | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/test/searcher.cpp b/test/searcher.cpp index 24beefc5d..ad7db9cb5 100644 --- a/test/searcher.cpp +++ b/test/searcher.cpp @@ -6,20 +6,37 @@ namespace kiwix { TEST(Searcher, search) { - Reader reader("./test/example.zim"); + Reader reader("./test/example.zim"); - Searcher searcher; - searcher.add_reader(&reader); - ASSERT_EQ(searcher.get_reader(0)->getTitle(), reader.getTitle()); + Searcher searcher; + searcher.add_reader(&reader); + ASSERT_EQ(searcher.get_reader(0)->getTitle(), reader.getTitle()); - searcher.search("wiki", 0, 2); - searcher.restart_search(); - ASSERT_EQ(searcher.getEstimatedResultCount(), (unsigned int)2); + searcher.search("wiki", 0, 2); + searcher.restart_search(); + ASSERT_EQ(searcher.getEstimatedResultCount(), (unsigned int)2); - auto result = searcher.getNextResult(); - ASSERT_EQ(result->get_title(), "FreedomBox for Communities/Offline Wikipedia - Wikibooks, open books for an open world"); - result = searcher.getNextResult(); - ASSERT_EQ(result->get_title(), "Wikibooks"); + auto result = searcher.getNextResult(); + ASSERT_EQ(result->get_title(), "FreedomBox for Communities/Offline Wikipedia - Wikibooks, open books for an open world"); + result = searcher.getNextResult(); + ASSERT_EQ(result->get_title(), "Wikibooks"); +} + +TEST(Searcher, incrementalRange) { + // Attempt to get 50 results in steps of 5 + zim::Archive archive("./test/zimfile.zim"); + zim::Searcher ftsearcher(archive); + zim::Query query; + query.setQuery("ray", false); + auto search = ftsearcher.search(query); + + int suggCount = 0; + for (int i = 0; i < 10; i++) { + auto srs = search.getResults(i*5, (i + 1)*5); // get 5 results + ASSERT_EQ(srs.size(), 5); + suggCount += srs.size(); + } + ASSERT_EQ(suggCount, 50); } } \ No newline at end of file