コード例 #1
0
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;
}