diff options
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/Ver4BinaryDictionaryTests.java')
-rw-r--r-- | tests/src/com/android/inputmethod/latin/Ver4BinaryDictionaryTests.java | 342 |
1 files changed, 0 insertions, 342 deletions
diff --git a/tests/src/com/android/inputmethod/latin/Ver4BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/Ver4BinaryDictionaryTests.java deleted file mode 100644 index 55177266e..000000000 --- a/tests/src/com/android/inputmethod/latin/Ver4BinaryDictionaryTests.java +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.inputmethod.latin; - -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; - -import com.android.inputmethod.latin.makedict.BinaryDictEncoderUtils; -import com.android.inputmethod.latin.makedict.FormatSpec; - -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -// TODO: Add a test to evaluate the speed of operations of Ver4 dictionary. -@LargeTest -public class Ver4BinaryDictionaryTests extends AndroidTestCase { - private static final String TEST_LOCALE = "test"; - private static final String TEST_DICT_FILE_EXTENSION = ".testDict"; - - @Override - protected void setUp() throws Exception { - super.setUp(); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - } - - // Note that dictVersion is different from dictionary format version and it never affects the - // dictionary format. - // TODO: Rename dictVersion to understandable name such as dictRevision. - private File createEmptyDictionaryAndGetTrieFile(final String dictVersion) throws IOException { - final File file = File.createTempFile(dictVersion, TEST_DICT_FILE_EXTENSION, - getContext().getCacheDir()); - file.delete(); - file.mkdir(); - Map<String, String> attributeMap = new HashMap<String, String>(); - attributeMap.put(FormatSpec.FileHeader.SUPPORTS_DYNAMIC_UPDATE_ATTRIBUTE, - FormatSpec.FileHeader.ATTRIBUTE_VALUE_TRUE); - if (BinaryDictionary.createEmptyDictFile(file.getAbsolutePath(), - 4 /* dictVersion */, attributeMap)) { - return new File(file, FormatSpec.TRIE_FILE_EXTENSION); - } else { - throw new IOException("Empty dictionary " + file.getAbsolutePath() + " " - + FormatSpec.TRIE_FILE_EXTENSION + " cannot be created."); - } - } - - public void testIsValidDictionary() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - assertTrue(binaryDictionary.isValidDictionary()); - } - - // TODO: Add large tests. - public void testReadProbability() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int frequency = 100; - binaryDictionary.addUnigramWord("a", frequency); - binaryDictionary.addUnigramWord("aaa", frequency); - binaryDictionary.addUnigramWord("ab", frequency); - - assertEquals(frequency, binaryDictionary.getFrequency("a")); - assertEquals(frequency, binaryDictionary.getFrequency("aaa")); - assertEquals(frequency, binaryDictionary.getFrequency("ab")); - } - - public static int getCalculatedBigramProbabiliy(final BinaryDictionary binaryDictionary, - final int unigramFrequency, final int bigramFrequency) { - final int bigramFrequencyDiff = BinaryDictEncoderUtils.getBigramFrequencyDiff( - unigramFrequency, bigramFrequency); - return binaryDictionary.calculateProbability(unigramFrequency, bigramFrequencyDiff); - } - - // TODO: Add large tests. - public void testReadBigrams() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int unigramFrequency = 1; - final int bigramFrequency0 = 10; - final int bigramFrequency1 = 1; - final int bigramFrequency2 = 15; - binaryDictionary.addUnigramWord("a", unigramFrequency); - binaryDictionary.addUnigramWord("aaa", unigramFrequency); - binaryDictionary.addUnigramWord("ab", unigramFrequency); - binaryDictionary.addBigramWords("a", "aaa", bigramFrequency0); - binaryDictionary.addBigramWords("a", "ab", bigramFrequency1); - binaryDictionary.addBigramWords("aaa", "ab", bigramFrequency2); - - assertEquals(binaryDictionary.calculateProbability(unigramFrequency, - bigramFrequency0), binaryDictionary.getBigramProbability("a", "aaa")); - assertEquals(binaryDictionary.calculateProbability(unigramFrequency, - bigramFrequency1), binaryDictionary.getBigramProbability("a", "ab")); - assertEquals(binaryDictionary.calculateProbability(unigramFrequency, - bigramFrequency2), binaryDictionary.getBigramProbability("aaa", "ab")); - - assertFalse(binaryDictionary.isValidBigram("aaa", "a")); - assertFalse(binaryDictionary.isValidBigram("ab", "a")); - assertFalse(binaryDictionary.isValidBigram("ab", "aaa")); - } - - // TODO: Add large tests. - public void testWriteUnigrams() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int probability = 100; - binaryDictionary.addUnigramWord("aaa", probability); - binaryDictionary.addUnigramWord("abc", probability); - binaryDictionary.addUnigramWord("bcd", probability); - binaryDictionary.addUnigramWord("x", probability); - binaryDictionary.addUnigramWord("y", probability); - - assertEquals(probability, binaryDictionary.getFrequency("aaa")); - assertEquals(probability, binaryDictionary.getFrequency("abc")); - assertEquals(probability, binaryDictionary.getFrequency("bcd")); - assertEquals(probability, binaryDictionary.getFrequency("x")); - assertEquals(probability, binaryDictionary.getFrequency("y")); - } - - public void testWriteBigrams() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int unigramProbability = 100; - final int bigramProbability = 10; - binaryDictionary.addUnigramWord("aaa", unigramProbability); - binaryDictionary.addUnigramWord("abb", unigramProbability); - binaryDictionary.addUnigramWord("bcc", unigramProbability); - binaryDictionary.addBigramWords("aaa", "abb", bigramProbability); - binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability); - binaryDictionary.addBigramWords("abb", "aaa", bigramProbability); - binaryDictionary.addBigramWords("abb", "bcc", bigramProbability); - - final int probability = binaryDictionary.calculateProbability(unigramProbability, - bigramProbability); - assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb")); - assertEquals(true, binaryDictionary.isValidBigram("aaa", "bcc")); - assertEquals(true, binaryDictionary.isValidBigram("abb", "aaa")); - assertEquals(true, binaryDictionary.isValidBigram("abb", "bcc")); - assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "abb")); - assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "bcc")); - assertEquals(probability, binaryDictionary.getBigramProbability("abb", "aaa")); - assertEquals(probability, binaryDictionary.getBigramProbability("abb", "bcc")); - } - - public void testRemoveBigramWords() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - final BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int unigramProbability = 100; - final int bigramProbability = 10; - binaryDictionary.addUnigramWord("aaa", unigramProbability); - binaryDictionary.addUnigramWord("abb", unigramProbability); - binaryDictionary.addUnigramWord("bcc", unigramProbability); - binaryDictionary.addBigramWords("aaa", "abb", bigramProbability); - binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability); - binaryDictionary.addBigramWords("abb", "aaa", bigramProbability); - binaryDictionary.addBigramWords("abb", "bcc", bigramProbability); - - assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb")); - assertEquals(true, binaryDictionary.isValidBigram("aaa", "bcc")); - assertEquals(true, binaryDictionary.isValidBigram("abb", "aaa")); - assertEquals(true, binaryDictionary.isValidBigram("abb", "bcc")); - - binaryDictionary.removeBigramWords("aaa", "abb"); - assertEquals(false, binaryDictionary.isValidBigram("aaa", "abb")); - binaryDictionary.addBigramWords("aaa", "abb", bigramProbability); - assertEquals(true, binaryDictionary.isValidBigram("aaa", "abb")); - - binaryDictionary.removeBigramWords("aaa", "bcc"); - assertEquals(false, binaryDictionary.isValidBigram("aaa", "bcc")); - binaryDictionary.removeBigramWords("abb", "aaa"); - assertEquals(false, binaryDictionary.isValidBigram("abb", "aaa")); - binaryDictionary.removeBigramWords("abb", "bcc"); - assertEquals(false, binaryDictionary.isValidBigram("abb", "bcc")); - - binaryDictionary.removeBigramWords("aaa", "abb"); - // Test remove non-existing bigram operation. - binaryDictionary.removeBigramWords("aaa", "abb"); - binaryDictionary.removeBigramWords("bcc", "aaa"); - } - - public void testFlushDictionary() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int probability = 100; - binaryDictionary.addUnigramWord("aaa", probability); - binaryDictionary.addUnigramWord("abcd", probability); - // Close without flushing. - binaryDictionary.close(); - - binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - assertEquals(Dictionary.NOT_A_PROBABILITY, binaryDictionary.getFrequency("aaa")); - assertEquals(Dictionary.NOT_A_PROBABILITY, binaryDictionary.getFrequency("abcd")); - - binaryDictionary.addUnigramWord("aaa", probability); - binaryDictionary.addUnigramWord("abcd", probability); - binaryDictionary.flush(); - binaryDictionary.close(); - - binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - assertEquals(probability, binaryDictionary.getFrequency("aaa")); - assertEquals(probability, binaryDictionary.getFrequency("abcd")); - binaryDictionary.addUnigramWord("bcde", probability); - binaryDictionary.flush(); - binaryDictionary.close(); - - binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - assertEquals(probability, binaryDictionary.getFrequency("bcde")); - binaryDictionary.close(); - } - - public void testFlushWithGCDictionary() { - final String dictVersion = Long.toString(System.currentTimeMillis()); - File trieFile = null; - try { - trieFile = createEmptyDictionaryAndGetTrieFile(dictVersion); - } catch (IOException e) { - fail("IOException while writing an initial dictionary : " + e); - } - BinaryDictionary binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - - final int unigramProbability = 100; - final int bigramProbability = 10; - binaryDictionary.addUnigramWord("aaa", unigramProbability); - binaryDictionary.addUnigramWord("abb", unigramProbability); - binaryDictionary.addUnigramWord("bcc", unigramProbability); - binaryDictionary.addBigramWords("aaa", "abb", bigramProbability); - binaryDictionary.addBigramWords("aaa", "bcc", bigramProbability); - binaryDictionary.addBigramWords("abb", "aaa", bigramProbability); - binaryDictionary.addBigramWords("abb", "bcc", bigramProbability); - binaryDictionary.flushWithGC(); - binaryDictionary.close(); - - binaryDictionary = new BinaryDictionary(trieFile.getAbsolutePath(), - 0 /* offset */, trieFile.length(), true /* useFullEditDistance */, - Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */); - final int probability = binaryDictionary.calculateProbability(unigramProbability, - bigramProbability); - assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa")); - assertEquals(unigramProbability, binaryDictionary.getFrequency("abb")); - assertEquals(unigramProbability, binaryDictionary.getFrequency("bcc")); - assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "abb")); - assertEquals(probability, binaryDictionary.getBigramProbability("aaa", "bcc")); - assertEquals(probability, binaryDictionary.getBigramProbability("abb", "aaa")); - assertEquals(probability, binaryDictionary.getBigramProbability("abb", "bcc")); - assertEquals(false, binaryDictionary.isValidBigram("bcc", "aaa")); - assertEquals(false, binaryDictionary.isValidBigram("bcc", "bbc")); - assertEquals(false, binaryDictionary.isValidBigram("aaa", "aaa")); - binaryDictionary.flushWithGC(); - binaryDictionary.close(); - } -} |