From 076969f39326e0570d5711847e2815914fbfcc13 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 20 Mar 2024 21:00:47 +0100 Subject: [PATCH] refactor: extract finder-test template method --- vector_search_cli/main.cpp | 78 ++++++++------------------------------ 1 file changed, 16 insertions(+), 62 deletions(-) diff --git a/vector_search_cli/main.cpp b/vector_search_cli/main.cpp index f2ad6cf..479b72a 100644 --- a/vector_search_cli/main.cpp +++ b/vector_search_cli/main.cpp @@ -35,77 +35,31 @@ void test_finder_search(Finder &finder, std::string_view name, << " element(s) long" << endl; } -void test_finder(Finder &finder, std::string_view name) { +template +void test_finder(const vector &word_list, + std::string_view finder_name) { + cout << "\nrunning " << finder_name << endl; + + Timer constructor_timer; + FINDER finder(word_list); + constructor_timer.stop(); + cout << finder_name << " constructor took " << constructor_timer << endl; + for (const auto &search_term : {"A", "AB", "ABC", "ABCD"}) { - test_finder_search(finder, name, search_term); + test_finder_search(finder, finder_name, search_term); } } -void test_linear_finder(const vector &word_list) { - cout << "\nrunning linear finder" << endl; - - Timer constructor_timer; - LinearFinder linear_finder(word_list); - constructor_timer.stop(); - cout << "linear finder constructor took " << constructor_timer << endl; - - test_finder(linear_finder, "linear finder"); -} - -void test_sorted_linear_finder(const vector &word_list) { - cout << "\nrunning sorted linear finder" << endl; - - Timer constructor_timer; - SortedLinearFinder sorted_linear_finder(word_list); - constructor_timer.stop(); - cout << "sorted linear finder constructor took " << constructor_timer << endl; - - test_finder(sorted_linear_finder, "sorted linear finder"); -} - -void test_parallel_finder(const vector &word_list) { - cout << "\nrunning parallel finder" << endl; - - Timer constructor_timer; - ParallelFinder parallel_finder(word_list); - constructor_timer.stop(); - cout << "linear finder constructor took " << constructor_timer << endl; - - test_finder(parallel_finder, "parallel finder"); -} - -void test_tree_finder(const vector &word_list) { - cout << "\nrunning tree finder" << endl; - - Timer constructor_timer; - TreeFinder tree_finder(word_list); - constructor_timer.stop(); - cout << "tree finder constructor took " << constructor_timer << endl; - - test_finder(tree_finder, "tree finder"); -} - -void test_grouped_finder(const vector &word_list) { - cout << "\nrunning grouped finder" << endl; - - Timer constructor_timer; - GroupedFinder grouped_finder(word_list); - constructor_timer.stop(); - cout << "grouped finder constructor took " << constructor_timer << endl; - - test_finder(grouped_finder, "grouped_finder"); -} - int main(int argc, char *argv[]) { cout << "\n== VectorSearch ==" << endl; auto word_list = generate_word_list(5); - test_linear_finder(word_list); - test_sorted_linear_finder(word_list); - test_parallel_finder(word_list); - test_tree_finder(word_list); - test_grouped_finder(word_list); + test_finder(word_list, "linear finder"); + test_finder(word_list, "sorted linear finder"); + test_finder(word_list, "parallel finder"); + test_finder(word_list, "tree finder"); + test_finder(word_list, "grouped finder"); return EXIT_SUCCESS; }