Skip to content

Commit 51ecf46

Browse files
committed
wip: xapianizer unit tests
1 parent d8c224a commit 51ecf46

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

lib/mu-query-xapianizer.cc

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ parse_logop(const Store& store, Xapian::Query::op op, Sexp&& args, Mu::ParserFla
212212

213213
switch(op) {
214214
case Xapian::Query::OP_AND_NOT:
215+
// TODO: optimize AND_NOT
215216
if (qs.size() != 1)
216217
return Err(Error::Code::InvalidArgument,
217218
"expected single argument for NOT");
@@ -328,7 +329,7 @@ parse(const Store& store, Sexp&& s, Mu::ParserFlags flags)
328329
return Err(Error::Code::InvalidArgument, "unexpected sexp {}", s.to_string());
329330
}
330331

331-
/* LCOV_EXCL_START */
332+
/* LCOV_EXCL_START*/
332333
// parse the way Xapian's internal parser does it; for testing.
333334
static Xapian::Query
334335
xapian_query_classic(const std::string& expr, Mu::ParserFlags flags)
@@ -363,7 +364,7 @@ xapian_query_classic(const std::string& expr, Mu::ParserFlags flags)
363364
xqp.set_default_op(Xapian::Query::OP_AND);
364365
return xqp.parse_query(expr, xflags);
365366
}
366-
/* LCOV_EXCL_STOP */
367+
/* LCOV_EXCL_STOP*/
367368

368369
Result<Xapian::Query>
369370
Mu::make_xapian_query(const Store& store, const std::string& expr, Mu::ParserFlags flags) noexcept
@@ -399,10 +400,18 @@ main (int argc, char *argv[])
399400
if (auto&& query{make_xapian_query(*store, expr)}; !query) {
400401
mu_printerrln("error: {}", query.error());
401402
return 1;
402-
} else {
403-
mu_println("{}", query->get_description());
404-
return 0;
405-
}
403+
} else
404+
mu_println("mu: {}", query->get_description());
405+
406+
if (auto&& query{make_xapian_query(*store, expr, ParserFlags::XapianParser)}; !query) {
407+
mu_printerrln("error: {}", query.error());
408+
return 2;
409+
} else
410+
mu_println("xp: {}", query->get_description());
411+
412+
return 0;
413+
414+
406415
}
407416
#endif /*BUILD_XAPIANIZE_QUERY*/
408417

@@ -416,6 +425,25 @@ main (int argc, char *argv[])
416425

417426
using TestCase = std::pair<std::string, std::string>;
418427

428+
static void
429+
test_sexp()
430+
{
431+
/* tail */
432+
g_assert_false(!!tail(Sexp{}));
433+
auto t = tail(Sexp{1,2,3});
434+
g_assert_true(!!t && t->listp() && t->size() == 2);
435+
436+
/* head_symbol */
437+
g_assert_false(!!head_symbol(Sexp{}));
438+
assert_equal(head_symbol(Sexp{"foo"_sym, 1, 2}).value_or("bar"), "foo");
439+
440+
/* string_nth */
441+
g_assert_false(!!string_nth(Sexp{}, 123));
442+
g_assert_false(!!string_nth(Sexp{1, 2, 3}, 1));
443+
assert_equal(string_nth(Sexp{"aap", "noot", "mies"}, 2).value_or("wim"), "mies");
444+
}
445+
446+
419447
static void
420448
test_xapian()
421449
{
@@ -483,6 +511,8 @@ main(int argc, char* argv[])
483511
mu_test_init(&argc, &argv);
484512

485513
Xapian::QueryParser qp;
514+
515+
g_test_add_func("/query-parser/sexp", test_sexp);
486516
g_test_add_func("/query-parser/xapianizer", test_xapian);
487517

488518
return g_test_run();

0 commit comments

Comments
 (0)