21 #include "Lexicon.hpp"    22 #include "TextDict.hpp"    23 #include "TestUtils.hpp"    31   TextDictPtr CreateTextDictForText()
 const {
    32     LexiconPtr lexicon(
new Lexicon);
    33     lexicon->Add(DictEntryFactory::New(
"BYVoid", 
"byv"));
    34     lexicon->Add(DictEntryFactory::New(
"zigzagzig", 
"zag"));
    35     lexicon->Add(DictEntryFactory::New(utf8(
"積羽沉舟"), utf8(
"羣輕折軸")));
    36     lexicon->Add(DictEntryFactory::New(utf8(
"清"), 
"Tsing"));
    37     lexicon->Add(DictEntryFactory::New(utf8(
"清華"), 
"Tsinghua"));
    38     lexicon->Add(DictEntryFactory::New(utf8(
"清華大學"), 
"TsinghuaUniversity"));
    40     return TextDictPtr(
new TextDict(lexicon));
    43   DictPtr CreateDictForCharacters()
 const {
    44     LexiconPtr lexicon(
new Lexicon);
    45     lexicon->Add(DictEntryFactory::New(utf8(
"后"),
    46                                        vector<string>{utf8(
"后"), utf8(
"後")}));
    47     lexicon->Add(DictEntryFactory::New(utf8(
"发"),
    48                                        vector<string>{utf8(
"發"), utf8(
"髮")}));
    49     lexicon->Add(DictEntryFactory::New(
    50         utf8(
"干"), vector<string>{utf8(
"幹"), utf8(
"乾"), utf8(
"干")}));
    51     lexicon->Add(DictEntryFactory::New(utf8(
"里"),
    52                                        vector<string>{utf8(
"裏"), utf8(
"里")}));
    54     return TextDictPtr(
new TextDict(lexicon));
    57   DictPtr CreateDictForPhrases()
 const {
    58     LexiconPtr lexicon(
new Lexicon);
    59     lexicon->Add(DictEntryFactory::New(utf8(
"太后"), utf8(
"太后")));
    60     lexicon->Add(DictEntryFactory::New(utf8(
"头发"), utf8(
"頭髮")));
    61     lexicon->Add(DictEntryFactory::New(utf8(
"干燥"), utf8(
"乾燥")));
    62     lexicon->Add(DictEntryFactory::New(utf8(
"鼠标"), utf8(
"鼠標")));
    64     return TextDictPtr(
new TextDict(lexicon));
    67   DictPtr CreateDictForTaiwanVariants()
 const {
    68     LexiconPtr lexicon(
new Lexicon);
    69     lexicon->Add(DictEntryFactory::New(utf8(
"裏"), utf8(
"裡")));
    70     TextDictPtr textDict(
new TextDict(lexicon));
    74   DictPtr CreateTaiwanPhraseDict()
 const {
    75     LexiconPtr lexicon(
new Lexicon);
    76     lexicon->Add(DictEntryFactory::New(utf8(
"鼠标"), utf8(
"滑鼠")));
    77     lexicon->Add(DictEntryFactory::New(utf8(
"服务器"), utf8(
"伺服器")));
    78     lexicon->Add(DictEntryFactory::New(utf8(
"克罗地亚"), utf8(
"克羅埃西亞")));
    80     return TextDictPtr(
new TextDict(lexicon));
    83   void TestDict(
const DictPtr dict)
 const {
    85     EXPECT_TRUE(!entry.
IsNull());
    86     EXPECT_EQ(utf8(
"BYVoid"), entry.
Get()->Key());
    87     EXPECT_EQ(utf8(
"byv"), entry.
Get()->GetDefault());
    89     entry = dict->MatchPrefix(
"BYVoid123");
    90     EXPECT_TRUE(!entry.IsNull());
    91     EXPECT_EQ(utf8(
"BYVoid"), entry.Get()->Key());
    92     EXPECT_EQ(utf8(
"byv"), entry.Get()->GetDefault());
    94     entry = dict->MatchPrefix(utf8(
"積羽沉舟"));
    95     EXPECT_TRUE(!entry.IsNull());
    96     EXPECT_EQ(utf8(
"積羽沉舟"), entry.Get()->Key());
    97     EXPECT_EQ(utf8(
"羣輕折軸"), entry.Get()->GetDefault());
    99     entry = dict->MatchPrefix(
"Unknown");
   100     EXPECT_TRUE(entry.IsNull());
   102     const vector<const DictEntry*> matches =
   103         dict->MatchAllPrefixes(utf8(
"清華大學計算機系"));
   104     EXPECT_EQ(3, matches.size());
   105     EXPECT_EQ(utf8(
"清華大學"), matches.at(0)->Key());
   106     EXPECT_EQ(utf8(
"TsinghuaUniversity"), matches.at(0)->GetDefault());
   107     EXPECT_EQ(utf8(
"清華"), matches.at(1)->Key());
   108     EXPECT_EQ(utf8(
"Tsinghua"), matches.at(1)->GetDefault());
   109     EXPECT_EQ(utf8(
"清"), matches.at(2)->Key());
   110     EXPECT_EQ(utf8(
"Tsing"), matches.at(2)->GetDefault());
   113   const TextDictPtr textDict;
 Definition: BinaryDict.hpp:24
Storage of all entries. 
Definition: Lexicon.hpp:29
Text dictionary. 
Definition: TextDict.hpp:29
A class that wraps type T into a nullable type. 
Definition: Optional.hpp:26
const T & Get() const
Returns the containing data of the instance. 
Definition: Optional.hpp:41
Definition: TextDictTestBase.hpp:27
bool IsNull() const
Returns true if the instance is null. 
Definition: Optional.hpp:36