Add uppercase-first reverse auxiliary-code matching with dedicated caching for Shuangpin.
This commit is contained in:
1 parent
eb1211e595
commit
2bc321ecfb
3 files changed
+36
-1
No files matched your search
Submodule server/MetasequoiaImeEngine updated: 76d3c77546...12b65317cc.
@@ -97,6 +97,31 @@ TEST_CASE(EngineShuangpinSessionContinuesCompositionWithSingleHelpcode)
|
||||
REQUIRE_EQ(session.get_pinyin_sequence(), std::string("tele"));
|
||||
}
|
||||
|
||||
TEST_CASE(EngineShuangpinUppercaseSingleHelpcodePrefersSecondCodeMatches)
|
||||
{
|
||||
REQUIRE(HelpcodeUtils::select_helpcode_schema("lantian"));
|
||||
EngineInputSession session(SchemeType::Shuangpin);
|
||||
InputLetters(session, "nid");
|
||||
session.reset_state();
|
||||
InputLetters(session, "niD");
|
||||
|
||||
const auto &candidates = session.get_candidates();
|
||||
const auto index_of = [&](const std::string &word) {
|
||||
const auto found = std::find_if(candidates.begin(), candidates.end(),
|
||||
[&](const IInputSession::WordItem &item) { return item.word == word; });
|
||||
return static_cast<size_t>(std::distance(candidates.begin(), found));
|
||||
};
|
||||
|
||||
const size_t ni = index_of("泥");
|
||||
const size_t ni_second_code = index_of("溺");
|
||||
const size_t ni_other_second_code = index_of("腻");
|
||||
REQUIRE(ni < candidates.size());
|
||||
REQUIRE(ni_second_code < candidates.size());
|
||||
REQUIRE(ni_other_second_code < candidates.size());
|
||||
REQUIRE(ni_second_code < ni);
|
||||
REQUIRE(ni_other_second_code < ni);
|
||||
}
|
||||
|
||||
TEST_CASE(EngineShuangpinSessionContinuesCompositionWithDoubleHelpcode)
|
||||
{
|
||||
EngineInputSession session(SchemeType::Shuangpin);
|
||||
|
||||
@@ -12,6 +12,16 @@ TEST_CASE(ApplySegmentationCasesPreservesUppercaseMarkers)
|
||||
TEST_CASE(IsFullHelpModeRecognizesDoubleHelpcodePattern)
|
||||
{
|
||||
REQUIRE(ShuangpinUtil::IsFullHelpMode("xiteleaA"));
|
||||
REQUIRE(ShuangpinUtil::IsFullHelpMode("xiteleAa"));
|
||||
REQUIRE(ShuangpinUtil::IsFullHelpMode("xiteleAA"));
|
||||
REQUIRE(!ShuangpinUtil::IsFullHelpMode("xiteleaa"));
|
||||
REQUIRE(!ShuangpinUtil::IsFullHelpMode("xitelea"));
|
||||
REQUIRE(!ShuangpinUtil::IsFullHelpMode("xi"));
|
||||
}
|
||||
|
||||
TEST_CASE(FullHelpCodesUseFirstUppercaseMarkerForReverseOrder)
|
||||
{
|
||||
REQUIRE_EQ(ShuangpinUtil::GetFullHelpCodes("xiteleaB"), std::string("ab"));
|
||||
REQUIRE_EQ(ShuangpinUtil::GetFullHelpCodes("xiteleAb"), std::string("ba"));
|
||||
REQUIRE_EQ(ShuangpinUtil::GetFullHelpCodes("xiteleAB"), std::string("ba"));
|
||||
}
|
||||
Reference in new issue
Block a user