#include "ui/widgets/ime/pinyin_lookup.h" #include #include #include #include namespace { std::vector collect(const char* preedit) { std::vector out; auto add_candidate = [&out](const char* candidate) -> bool { if (std::find(out.begin(), out.end(), candidate) == out.end()) { out.emplace_back(candidate); } return out.size() >= 7; }; ui::widgets::ime::collectPinyinCandidates(preedit, add_candidate); return out; } std::vector collectDigits(const char* digits) { std::vector out; auto add_candidate = [&out](const char* candidate) -> bool { if (std::find(out.begin(), out.end(), candidate) == out.end()) { out.emplace_back(candidate); } return out.size() >= 7; }; ui::widgets::ime::collectPinyinSpellingsForDigits(digits, add_candidate); return out; } bool contains(const std::vector& values, const char* expected) { return std::find(values.begin(), values.end(), expected) != values.end(); } } // namespace int main() { const std::vector zhong = collect("zhong"); assert(!zhong.empty()); assert(zhong.front() == u8"中"); const std::vector zhong_upper = collect("ZHONG"); assert(!zhong_upper.empty()); assert(zhong_upper.front() == u8"中"); const std::vector nihao = collect("nihao"); assert(contains(nihao, u8"你好")); const std::vector shoudao = collect("shoudao"); assert(contains(shoudao, u8"收到")); const std::vector t9_zhong = collectDigits("94664"); assert(contains(t9_zhong, "zhong")); return 0; }