Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e041bfab authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Update unit test for beginning-of-sentence.

Bug: 14119293
Change-Id: I594a1ca1096f0c12c678dd30eb75de905e55c5bb
parent 22931cd9
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -256,8 +256,25 @@ bool Ver4PatriciaTriePolicy::addNgramEntry(const PrevWordsInfo *const prevWordsI
            false /* tryLowerCaseSearch */);
    // TODO: Support N-gram.
    if (prevWordsPtNodePos[0] == NOT_A_DICT_POS) {
        if (prevWordsInfo->isNthPrevWordBeginningOfSentence(1 /* n */)) {
            const std::vector<UnigramProperty::ShortcutProperty> shortcuts;
            const UnigramProperty beginningOfSentenceUnigramProperty(
                    true /* representsBeginningOfSentence */, true /* isNotAWord */,
                    false /* isBlacklisted */, MAX_PROBABILITY /* probability */,
                    NOT_A_TIMESTAMP /* timestamp */, 0 /* level */, 0 /* count */, &shortcuts);
            if (!addUnigramEntry(prevWordsInfo->getNthPrevWordCodePoints(1 /* n */),
                    prevWordsInfo->getNthPrevWordCodePointCount(1 /* n */),
                    &beginningOfSentenceUnigramProperty)) {
                AKLOGE("Cannot add unigram entry for the beginning-of-sentence.");
                return false;
            }
            // Refresh Terminal PtNode positions.
            prevWordsInfo->getPrevWordsTerminalPtNodePos(this, prevWordsPtNodePos,
                    false /* tryLowerCaseSearch */);
        } else {
            return false;
        }
    }
    const int word1Pos = getTerminalPtNodePositionOfWord(
            bigramProperty->getTargetCodePoints()->data(),
            bigramProperty->getTargetCodePoints()->size(), false /* forceLowerCaseSearch */);
+7 −11
Original line number Diff line number Diff line
@@ -1450,27 +1450,23 @@ public class BinaryDictionaryTests extends AndroidTestCase {
                0 /* offset */, dictFile.length(), true /* useFullEditDistance */,
                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
        final int dummyProbability = 0;
        binaryDictionary.addUnigramEntry("", dummyProbability, "" /* shortcutTarget */,
                BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
                true /* isBeginningOfSentence */, true /* isNotAWord */, false /* isBlacklisted */,
                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
        final PrevWordsInfo prevWordsInfoStartOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
        final PrevWordsInfo prevWordsInfoBeginningOfSentence = PrevWordsInfo.BEGINNING_OF_SENTENCE;
        final int bigramProbability = 200;
        addUnigramWord(binaryDictionary, "aaa", dummyProbability);
        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
        assertEquals(bigramProbability,
                binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "aaa", bigramProbability,
                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
        addUnigramWord(binaryDictionary, "bbb", dummyProbability);
        binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "bbb", bigramProbability,
        binaryDictionary.addNgramEntry(prevWordsInfoBeginningOfSentence, "bbb", bigramProbability,
                BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
        binaryDictionary.flushWithGC();
        assertEquals(bigramProbability,
                binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "aaa"));
        assertEquals(bigramProbability,
                binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "bbb"));
                binaryDictionary.getNgramProbability(prevWordsInfoBeginningOfSentence, "bbb"));
    }

    public void testGetMaxFrequencyOfExactMatches() {