#include "settings/dictionary_validation.h" #include "tests/includes/test_framework.h" #include TEST_CASE(DictionaryFullPinyinValidationRejectsAbbreviatedSyllables) { quanpin::Segments segments; std::string normalized; REQUIRE(SettingsDictionary::Validation::NormalizeFullPinyin("nihao", segments, normalized)); REQUIRE_EQ(normalized, std::string("ni'hao")); REQUIRE(SettingsDictionary::Validation::NormalizeFullPinyin("xi'an", segments, normalized)); REQUIRE_EQ(normalized, std::string("xi'an")); REQUIRE(!SettingsDictionary::Validation::NormalizeFullPinyin("nh", segments, normalized)); REQUIRE(!SettingsDictionary::Validation::NormalizeFullPinyin("ni'h", segments, normalized)); REQUIRE(!SettingsDictionary::Validation::NormalizeFullPinyin("ni'", segments, normalized)); } TEST_CASE(QuickPhraseValidationMatchesNamedPipeWcharCapacity) { REQUIRE(SettingsDictionary::Validation::QuickPhraseFitsNamedPipe(std::string(199, 'a'))); REQUIRE(!SettingsDictionary::Validation::QuickPhraseFitsNamedPipe(std::string(200, 'a'))); const std::string emoji = "\xF0\x9F\x98\x80"; REQUIRE(SettingsDictionary::Validation::QuickPhraseFitsNamedPipe(std::string(197, 'a') + emoji)); REQUIRE(!SettingsDictionary::Validation::QuickPhraseFitsNamedPipe(std::string(198, 'a') + emoji)); } TEST_CASE(CodedDictionaryImportRequiresTabsAndPreservesSpacesInWords) { std::string word; std::string code; std::string message; int weight = -1; REQUIRE(SettingsDictionary::Validation::ParseCodedImportLine("包含 空格的词\tbao'han'kong'ge'de'ci\t123", word, code, weight, message)); REQUIRE_EQ(word, std::string("包含 空格的词")); REQUIRE_EQ(code, std::string("bao'han'kong'ge'de'ci")); REQUIRE_EQ(weight, 123); REQUIRE(!SettingsDictionary::Validation::ParseCodedImportLine("普通词 putongci 10", word, code, weight, message)); REQUIRE(!SettingsDictionary::Validation::ParseCodedImportLine("普通词\tputongci", word, code, weight, message)); REQUIRE(!SettingsDictionary::Validation::ParseCodedImportLine("普通词\tputongci\t10\textra", word, code, weight, message)); }