Loading java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −18 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ public final class BinaryDictionary extends Dictionary { long newFormatVersion); // TODO: Move native dict into session private final void loadDictionary(final String path, final long startOffset, private void loadDictionary(final String path, final long startOffset, final long length, final boolean isUpdatable) { mHasUpdated = false; mNativeDict = openNative(path, startOffset, length, isUpdatable); Loading Loading @@ -487,23 +487,6 @@ public final class BinaryDictionary extends Dictionary { return true; } // Remove an n-gram entry from the binary dictionary in native code. public boolean removeNgramEntry(final NgramContext ngramContext, final String word) { if (!ngramContext.isValid() || TextUtils.isEmpty(word)) { return false; } final int[][] prevWordCodePointArrays = new int[ngramContext.getPrevWordCount()][]; final boolean[] isBeginningOfSentenceArray = new boolean[ngramContext.getPrevWordCount()]; ngramContext.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray); final int[] wordCodePoints = StringUtils.toCodePointArray(word); if (!removeNgramEntryNative(mNativeDict, prevWordCodePointArrays, isBeginningOfSentenceArray, wordCodePoints)) { return false; } mHasUpdated = true; return true; } // Update entries for the word occurrence with the ngramContext. public boolean updateEntriesForWordWithNgramContext(@Nonnull final NgramContext ngramContext, final String word, final boolean isValidWord, final int count, final int timestamp) { Loading java/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtils.java +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ public final class BinaryDictionaryUtils { JniUtils.loadNativeLibrary(); } @UsedForTesting private static native boolean createEmptyDictFileNative(String filePath, long dictVersion, String locale, String[] attributeKeyStringArray, String[] attributeValueStringArray); private static native float calcNormalizedScoreNative(int[] before, int[] after, int score); Loading tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java +0 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,6 @@ import org.junit.Test; @SmallTest public class KeyboardLayoutTest { private KeyboardLayout mKeyboardLayout; @Test public void testNewKeyboardLayout() { KeyboardLayout keyboardLayout = KeyboardLayout Loading tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java +6 −79 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import java.util.HashSet; import java.util.Locale; import java.util.Random; // TODO Use the seed passed as an argument for makedict test. @LargeTest public class BinaryDictionaryTests extends AndroidTestCase { private static final String TEST_DICT_FILE_EXTENSION = ".testDict"; Loading Loading @@ -214,10 +213,9 @@ public class BinaryDictionaryTests extends AndroidTestCase { private static void addTrigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2, final int probability) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); binaryDictionary.addNgramEntry(ngramContext, word2, probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */); binaryDictionary.addNgramEntry( new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2, probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */); } private static boolean isValidBigram(final BinaryDictionary binaryDictionary, Loading @@ -225,18 +223,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { return binaryDictionary.isValidNgram(new NgramContext(new WordInfo(word0)), word1); } private static void removeBigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1) { binaryDictionary.removeNgramEntry(new NgramContext(new WordInfo(word0)), word1); } private static void removeTrigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); binaryDictionary.removeNgramEntry(ngramContext, word2); } private static int getBigramProbability(final BinaryDictionary binaryDictionary, final String word0, final String word1) { return binaryDictionary.getNgramProbability(new NgramContext(new WordInfo(word0)), word1); Loading @@ -244,9 +230,8 @@ public class BinaryDictionaryTests extends AndroidTestCase { private static int getTrigramProbability(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); return binaryDictionary.getNgramProbability(ngramContext, word2); return binaryDictionary.getNgramProbability( new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2); } public void testAddUnigramWord() { Loading Loading @@ -421,48 +406,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } public void testRemoveBigramWords() { for (final int formatVersion : DICT_FORMAT_VERSIONS) { testRemoveBigramWords(formatVersion); } } private void testRemoveBigramWords(final int formatVersion) { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(formatVersion); final int unigramProbability = 100; final int bigramProbability = 150; addUnigramWord(binaryDictionary, "aaa", unigramProbability); addUnigramWord(binaryDictionary, "abb", unigramProbability); addUnigramWord(binaryDictionary, "bcc", unigramProbability); addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability); addBigramWords(binaryDictionary, "aaa", "bcc", bigramProbability); addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability); addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability); assertTrue(isValidBigram(binaryDictionary, "aaa", "abb")); assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc")); assertTrue(isValidBigram(binaryDictionary, "abb", "aaa")); assertTrue(isValidBigram(binaryDictionary, "abb", "bcc")); removeBigramEntry(binaryDictionary, "aaa", "abb"); assertFalse(isValidBigram(binaryDictionary, "aaa", "abb")); addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability); assertTrue(isValidBigram(binaryDictionary, "aaa", "abb")); removeBigramEntry(binaryDictionary, "aaa", "bcc"); assertFalse(isValidBigram(binaryDictionary, "aaa", "bcc")); removeBigramEntry(binaryDictionary, "abb", "aaa"); assertFalse(isValidBigram(binaryDictionary, "abb", "aaa")); removeBigramEntry(binaryDictionary, "abb", "bcc"); assertFalse(isValidBigram(binaryDictionary, "abb", "bcc")); removeBigramEntry(binaryDictionary, "aaa", "abb"); // Test remove non-existing bigram operation. removeBigramEntry(binaryDictionary, "aaa", "abb"); removeBigramEntry(binaryDictionary, "bcc", "aaa"); } public void testAddTrigramWords() { for (final int formatVersion : DICT_FORMAT_VERSIONS) { if (supportsNgram(formatVersion)) { Loading Loading @@ -495,11 +438,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { addTrigramEntry(binaryDictionary, "bcc", "abb", "aaa", updatedTrigramProbability); assertEquals(updatedTrigramProbability, getTrigramProbability(binaryDictionary, "bcc", "abb", "aaa")); removeTrigramEntry(binaryDictionary, "aaa", "abb", "bcc"); assertEquals(Dictionary.NOT_A_PROBABILITY, getTrigramProbability(binaryDictionary, "aaa", "abb", "bcc")); assertTrue(isValidBigram(binaryDictionary, "abb", "bcc")); } public void testFlushDictionary() { Loading Loading @@ -655,7 +593,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { final int initialUnigramCount = 100; final float addUnigramProb = 0.5f; final float addBigramProb = 0.8f; final float removeBigramProb = 0.2f; final int codePointSetSize = 30; final long seed = System.currentTimeMillis(); Loading Loading @@ -710,14 +647,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { bigramProbabilities.put(bigram, bigramProbability); addBigramWords(binaryDictionary, word0, word1, bigramProbability); } // Remove bigram. if (random.nextFloat() < removeBigramProb && !bigramWords.isEmpty()) { final int bigramIndex = random.nextInt(bigramWords.size()); final Pair<String, String> bigram = bigramWords.get(bigramIndex); bigramWords.remove(bigramIndex); bigramProbabilities.remove(bigram); removeBigramEntry(binaryDictionary, bigram.first, bigram.second); } } // Test whether the all unigram operations are collectlly handled. Loading @@ -731,8 +660,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { final Pair<String, String> bigram = bigramWords.get(i); final int probability; if (bigramProbabilities.containsKey(bigram)) { final int bigramProbability = bigramProbabilities.get(bigram); probability = bigramProbability; probability = bigramProbabilities.get(bigram); } else { probability = Dictionary.NOT_A_PROBABILITY; } Loading Loading @@ -1051,7 +979,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { addUnigramWord(binaryDictionary, "bbb", unigramProbability); final int bigramProbability = 150; addBigramWords(binaryDictionary, "aaa", "bbb", bigramProbability); final int shortcutProbability = 10; binaryDictionary.addUnigramEntry("ccc", unigramProbability, false /* isBeginningOfSentence */, false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */); Loading Loading
java/src/com/android/inputmethod/latin/BinaryDictionary.java +1 −18 Original line number Diff line number Diff line Loading @@ -216,7 +216,7 @@ public final class BinaryDictionary extends Dictionary { long newFormatVersion); // TODO: Move native dict into session private final void loadDictionary(final String path, final long startOffset, private void loadDictionary(final String path, final long startOffset, final long length, final boolean isUpdatable) { mHasUpdated = false; mNativeDict = openNative(path, startOffset, length, isUpdatable); Loading Loading @@ -487,23 +487,6 @@ public final class BinaryDictionary extends Dictionary { return true; } // Remove an n-gram entry from the binary dictionary in native code. public boolean removeNgramEntry(final NgramContext ngramContext, final String word) { if (!ngramContext.isValid() || TextUtils.isEmpty(word)) { return false; } final int[][] prevWordCodePointArrays = new int[ngramContext.getPrevWordCount()][]; final boolean[] isBeginningOfSentenceArray = new boolean[ngramContext.getPrevWordCount()]; ngramContext.outputToArray(prevWordCodePointArrays, isBeginningOfSentenceArray); final int[] wordCodePoints = StringUtils.toCodePointArray(word); if (!removeNgramEntryNative(mNativeDict, prevWordCodePointArrays, isBeginningOfSentenceArray, wordCodePoints)) { return false; } mHasUpdated = true; return true; } // Update entries for the word occurrence with the ngramContext. public boolean updateEntriesForWordWithNgramContext(@Nonnull final NgramContext ngramContext, final String word, final boolean isValidWord, final int count, final int timestamp) { Loading
java/src/com/android/inputmethod/latin/utils/BinaryDictionaryUtils.java +1 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ public final class BinaryDictionaryUtils { JniUtils.loadNativeLibrary(); } @UsedForTesting private static native boolean createEmptyDictFileNative(String filePath, long dictVersion, String locale, String[] attributeKeyStringArray, String[] attributeValueStringArray); private static native float calcNormalizedScoreNative(int[] before, int[] after, int score); Loading
tests/src/com/android/inputmethod/keyboard/KeyboardLayoutTest.java +0 −2 Original line number Diff line number Diff line Loading @@ -27,8 +27,6 @@ import org.junit.Test; @SmallTest public class KeyboardLayoutTest { private KeyboardLayout mKeyboardLayout; @Test public void testNewKeyboardLayout() { KeyboardLayout keyboardLayout = KeyboardLayout Loading
tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java +6 −79 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import java.util.HashSet; import java.util.Locale; import java.util.Random; // TODO Use the seed passed as an argument for makedict test. @LargeTest public class BinaryDictionaryTests extends AndroidTestCase { private static final String TEST_DICT_FILE_EXTENSION = ".testDict"; Loading Loading @@ -214,10 +213,9 @@ public class BinaryDictionaryTests extends AndroidTestCase { private static void addTrigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2, final int probability) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); binaryDictionary.addNgramEntry(ngramContext, word2, probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */); binaryDictionary.addNgramEntry( new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2, probability, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */); } private static boolean isValidBigram(final BinaryDictionary binaryDictionary, Loading @@ -225,18 +223,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { return binaryDictionary.isValidNgram(new NgramContext(new WordInfo(word0)), word1); } private static void removeBigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1) { binaryDictionary.removeNgramEntry(new NgramContext(new WordInfo(word0)), word1); } private static void removeTrigramEntry(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); binaryDictionary.removeNgramEntry(ngramContext, word2); } private static int getBigramProbability(final BinaryDictionary binaryDictionary, final String word0, final String word1) { return binaryDictionary.getNgramProbability(new NgramContext(new WordInfo(word0)), word1); Loading @@ -244,9 +230,8 @@ public class BinaryDictionaryTests extends AndroidTestCase { private static int getTrigramProbability(final BinaryDictionary binaryDictionary, final String word0, final String word1, final String word2) { final NgramContext ngramContext = new NgramContext(new WordInfo[] { new WordInfo(word1), new WordInfo(word0) } ); return binaryDictionary.getNgramProbability(ngramContext, word2); return binaryDictionary.getNgramProbability( new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2); } public void testAddUnigramWord() { Loading Loading @@ -421,48 +406,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { } } public void testRemoveBigramWords() { for (final int formatVersion : DICT_FORMAT_VERSIONS) { testRemoveBigramWords(formatVersion); } } private void testRemoveBigramWords(final int formatVersion) { final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(formatVersion); final int unigramProbability = 100; final int bigramProbability = 150; addUnigramWord(binaryDictionary, "aaa", unigramProbability); addUnigramWord(binaryDictionary, "abb", unigramProbability); addUnigramWord(binaryDictionary, "bcc", unigramProbability); addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability); addBigramWords(binaryDictionary, "aaa", "bcc", bigramProbability); addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability); addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability); assertTrue(isValidBigram(binaryDictionary, "aaa", "abb")); assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc")); assertTrue(isValidBigram(binaryDictionary, "abb", "aaa")); assertTrue(isValidBigram(binaryDictionary, "abb", "bcc")); removeBigramEntry(binaryDictionary, "aaa", "abb"); assertFalse(isValidBigram(binaryDictionary, "aaa", "abb")); addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability); assertTrue(isValidBigram(binaryDictionary, "aaa", "abb")); removeBigramEntry(binaryDictionary, "aaa", "bcc"); assertFalse(isValidBigram(binaryDictionary, "aaa", "bcc")); removeBigramEntry(binaryDictionary, "abb", "aaa"); assertFalse(isValidBigram(binaryDictionary, "abb", "aaa")); removeBigramEntry(binaryDictionary, "abb", "bcc"); assertFalse(isValidBigram(binaryDictionary, "abb", "bcc")); removeBigramEntry(binaryDictionary, "aaa", "abb"); // Test remove non-existing bigram operation. removeBigramEntry(binaryDictionary, "aaa", "abb"); removeBigramEntry(binaryDictionary, "bcc", "aaa"); } public void testAddTrigramWords() { for (final int formatVersion : DICT_FORMAT_VERSIONS) { if (supportsNgram(formatVersion)) { Loading Loading @@ -495,11 +438,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { addTrigramEntry(binaryDictionary, "bcc", "abb", "aaa", updatedTrigramProbability); assertEquals(updatedTrigramProbability, getTrigramProbability(binaryDictionary, "bcc", "abb", "aaa")); removeTrigramEntry(binaryDictionary, "aaa", "abb", "bcc"); assertEquals(Dictionary.NOT_A_PROBABILITY, getTrigramProbability(binaryDictionary, "aaa", "abb", "bcc")); assertTrue(isValidBigram(binaryDictionary, "abb", "bcc")); } public void testFlushDictionary() { Loading Loading @@ -655,7 +593,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { final int initialUnigramCount = 100; final float addUnigramProb = 0.5f; final float addBigramProb = 0.8f; final float removeBigramProb = 0.2f; final int codePointSetSize = 30; final long seed = System.currentTimeMillis(); Loading Loading @@ -710,14 +647,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { bigramProbabilities.put(bigram, bigramProbability); addBigramWords(binaryDictionary, word0, word1, bigramProbability); } // Remove bigram. if (random.nextFloat() < removeBigramProb && !bigramWords.isEmpty()) { final int bigramIndex = random.nextInt(bigramWords.size()); final Pair<String, String> bigram = bigramWords.get(bigramIndex); bigramWords.remove(bigramIndex); bigramProbabilities.remove(bigram); removeBigramEntry(binaryDictionary, bigram.first, bigram.second); } } // Test whether the all unigram operations are collectlly handled. Loading @@ -731,8 +660,7 @@ public class BinaryDictionaryTests extends AndroidTestCase { final Pair<String, String> bigram = bigramWords.get(i); final int probability; if (bigramProbabilities.containsKey(bigram)) { final int bigramProbability = bigramProbabilities.get(bigram); probability = bigramProbability; probability = bigramProbabilities.get(bigram); } else { probability = Dictionary.NOT_A_PROBABILITY; } Loading Loading @@ -1051,7 +979,6 @@ public class BinaryDictionaryTests extends AndroidTestCase { addUnigramWord(binaryDictionary, "bbb", unigramProbability); final int bigramProbability = 150; addBigramWords(binaryDictionary, "aaa", "bbb", bigramProbability); final int shortcutProbability = 10; binaryDictionary.addUnigramEntry("ccc", unigramProbability, false /* isBeginningOfSentence */, false /* isNotAWord */, false /* isPossiblyOffensive */, 0 /* timestamp */); Loading