int trivial_scrabble_test() { long result = errors_counter(); typedef containers::ternary_tree<std::string, const char*> Tst; Tst names; names["ABCD"] = "ABCD"; names["Abcd"] = "Abcd"; names["ABcd"] = "ABcd"; names["aBCd"] = "aBCd"; names["abc"] = "abc"; names["abcde"] = "abcde"; names["bcd"] = "bcd"; names["abCD"] = "abCD"; names["abCd"] = "abCd"; names["AbcD"] = "AbcD"; names["ABcD"] = "ABcD"; names["aBCD"] = "aBCD"; names["abCDE"] = "abCDE"; names["abCDd"] = "abCDd"; names["abCcd"] = "abCcd"; names["bcdc"] = "bcdc"; names["aab"] = "aab"; Tst::search_results_list matches = names.create_search_results(); typedef Tst::search_results_list::iterator ResultIter; int i = 0; std::string s("abcde"); names.combinatorial_search(s, std::back_inserter(matches)); BOOST_CHECK(matches.size() == 3); matches.clear(); std::random_shuffle(s.begin(), s.end()); names.combinatorial_search(s, std::back_inserter(matches)); BOOST_CHECK(matches.size() == 3); // with wildcards matches.clear(); std::random_shuffle(s.begin(), s.end()); names.combinatorial_search(s, std::back_inserter(matches), 1); BOOST_CHECK(matches.size() == 8); //for (ResultIter rit = matches.begin(); rit != matches.end(); ++rit, ++i) // std::cout << i << ": " << **rit << "\n"; matches.clear(); s.append(s); std::random_shuffle(s.begin(), s.end()); names.combinatorial_search(s, std::back_inserter(matches)); BOOST_CHECK(matches.size() == 5); //for (ResultIter rit = matches.begin(); rit != matches.end(); ++rit, ++i) // std::cout << i << ": " << **rit << "\n"; return errors_counter() - result; }