Skip to content
PyZyTest.cc 52.1 KiB
Newer Older
        EXPECT_EQ ("", context.auxiliaryText ());
        EXPECT_EQ (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_CONVERTED);
        EXPECT_EQ (0, context.cursor ());
        EXPECT_EQ ("", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("", context.auxiliaryText ());
        EXPECT_EQ (0, context.candidates ().size ());
        EXPECT_EQ ("妈妈好吃哦ㄛ", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (1, observer.commitTextCount ());
    }

    { // Many operations
        context.reset ();

        observer.clear ();
        insertKeys (context, "aazhi");
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (5, observer.preeditTextCount ());
        EXPECT_EQ (5, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.focusCandidate (1);
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.selectCandidate (3);
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("慢慢", context.selectedText ());
        EXPECT_EQ ("好吃哦", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        // TODO(hsumita) maybe we should get AA制
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.unselectCandidates ();
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        // TODO (hsumita): should we use a space as a separator of restText
        // TODO (hsumita): "ㄇㄇㄈㄘ ㄛ" is conversionText or restText ?
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.moveCursorLeft ();
        EXPECT_EQ (4, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("ㄇㄇㄈㄘ ㄛ", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|ㄛ", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.insert ('i');
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhii", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("ㄇㄇㄈㄘㄛ ㄛ", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|ㄛ", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.removeCharBefore ();
        EXPECT_EQ (4, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("ㄇㄇㄈㄘ ㄛ", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|ㄛ", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.moveCursorRight ();
        EXPECT_EQ (5, context.cursor ());
        EXPECT_EQ ("aazhi", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈好吃哦", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄛ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.removeWordBefore ();
        EXPECT_EQ (4, context.cursor ());
        EXPECT_EQ ("aazh", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈好吃", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
        insertKeys (context, "nihk");
        EXPECT_EQ (8, context.cursor ());
        EXPECT_EQ ("aazhnihk", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("妈妈好吃是哦车", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄇ,ㄇ,ㄈ,ㄘ,ㄙ,ㄛ,ㄘㄜ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (4, observer.preeditTextCount ());
        EXPECT_EQ (4, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.selectCandidate (1);
        EXPECT_EQ (8, context.cursor ());
        EXPECT_EQ ("aazhnihk", context.inputText ());
        EXPECT_EQ ("妈妈", context.selectedText ());
        EXPECT_EQ ("好吃是哦车", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("ㄈ,ㄘ,ㄙ,ㄛ,ㄘㄜ|", context.auxiliaryText ());
        EXPECT_LT (0, context.candidates ().size ());
        EXPECT_EQ ("", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (0, observer.commitTextCount ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_CONVERTED);
        EXPECT_EQ (0, context.cursor ());
        EXPECT_EQ ("", context.inputText ());
        EXPECT_EQ ("", context.selectedText ());
        EXPECT_EQ ("", context.conversionText ());
        EXPECT_EQ ("", context.restText ());
        EXPECT_EQ ("", context.auxiliaryText ());
        EXPECT_EQ (0, context.candidates ().size ());
        EXPECT_EQ ("妈妈ㄈㄘㄙㄛㄘㄜ", observer.commitedText ());
        EXPECT_EQ (1, observer.preeditTextCount ());
        EXPECT_EQ (1, observer.lookupTableCount ());
        EXPECT_EQ (1, observer.commitTextCount ());
    }
}

Hiroshi Sumita's avatar
Hiroshi Sumita committed
TEST_F (PyZyTest, Commit) {
    {  // Pinyin commit
        CounterObserver observer;
        FullPinyinContext context(PinyinConfig::instance (), &observer);

        observer.clear ();
        insertKeys (context, "nihao");
        EXPECT_EQ ("nihao", context.inputText ());
        EXPECT_EQ ("你好", context.conversionText ());
        EXPECT_EQ ("ni hao|", context.auxiliaryText ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_RAW);
        EXPECT_EQ ("nihao", observer.commitedText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.reset ();
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        insertKeys (context, "nihao");
        EXPECT_EQ ("nihao", context.inputText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        EXPECT_EQ ("你好", context.conversionText ());
        EXPECT_EQ ("ni hao|", context.auxiliaryText ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_PHONETIC);
        EXPECT_EQ ("nihao", observer.commitedText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.reset ();
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        insertKeys (context, "nihao");
        EXPECT_EQ ("nihao", context.inputText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        EXPECT_EQ ("你好", context.conversionText ());
        EXPECT_EQ ("ni hao|", context.auxiliaryText ());

Hiroshi Sumita's avatar
Hiroshi Sumita committed
        // To get "你好", we should call selectCandidate().
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_CONVERTED);
        EXPECT_EQ ("nihao", observer.commitedText ());
    }
Hiroshi Sumita's avatar
Hiroshi Sumita committed
    {  // Bopomofo commit
        CounterObserver observer;
        BopomofoContext context(BopomofoConfig::instance (), &observer);

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        insertKeys (context, "sucl");
        EXPECT_EQ ("sucl", context.inputText ());
        EXPECT_EQ ("你好", context.conversionText ());
        EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());

        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_RAW);
        EXPECT_EQ ("sucl", observer.commitedText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.reset ();
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        insertKeys (context, "sucl");
        EXPECT_EQ ("sucl", context.inputText ());
        EXPECT_EQ ("你好", context.conversionText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.commit (InputContext::TYPE_PHONETIC);
        EXPECT_EQ ("ㄋㄧㄏㄠ", observer.commitedText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        context.reset ();
        observer.clear ();
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        insertKeys (context, "sucl");
        EXPECT_EQ ("sucl", context.inputText ());
        EXPECT_EQ ("你好", context.conversionText ());
Hiroshi Sumita's avatar
Hiroshi Sumita committed
        EXPECT_EQ ("ㄋㄧ,ㄏㄠ|", context.auxiliaryText ());

        // To get "你好", we should call selectCandidate().
        observer.clear ();
        context.commit (InputContext::TYPE_CONVERTED);
        EXPECT_EQ ("ㄋㄧㄏㄠ", observer.commitedText ());