aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java')
-rw-r--r--tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java241
1 files changed, 151 insertions, 90 deletions
diff --git a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
index c87c2a970..79384092a 100644
--- a/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
+++ b/tests/src/com/android/inputmethod/latin/BinaryDictionaryTests.java
@@ -47,7 +47,11 @@ public class BinaryDictionaryTests extends AndroidTestCase {
new int[] { FormatSpec.VERSION4, FormatSpec.VERSION4_DEV };
private static boolean canCheckBigramProbability(final int formatVersion) {
- return formatVersion >= FormatSpec.VERSION4_DEV;
+ return formatVersion > FormatSpec.VERSION401;
+ }
+
+ private static boolean supportsBeginningOfSentence(final int formatVersion) {
+ return formatVersion > FormatSpec.VERSION401;
}
private File createEmptyDictionaryAndGetFile(final String dictId,
@@ -170,8 +174,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
addUnigramWord(binaryDictionary, validLongWord, probability);
addUnigramWord(binaryDictionary, invalidLongWord, probability);
// Too long short cut.
- binaryDictionary.addUnigramWord("a", probability, invalidLongWord,
- 10 /* shortcutProbability */, false /* isNotAWord */, false /* isBlacklisted */,
+ binaryDictionary.addUnigramEntry("a", probability, invalidLongWord,
+ 10 /* shortcutProbability */, false /* isBeginningOfSentence */,
+ false /* isNotAWord */, false /* isBlacklisted */,
BinaryDictionary.NOT_A_VALID_TIMESTAMP);
addUnigramWord(binaryDictionary, "abc", probability);
final int updatedProbability = 200;
@@ -188,20 +193,35 @@ public class BinaryDictionaryTests extends AndroidTestCase {
dictFile.delete();
}
- private void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
+ private static void addUnigramWord(final BinaryDictionary binaryDictionary, final String word,
final int probability) {
- binaryDictionary.addUnigramWord(word, probability, "" /* shortcutTarget */,
+ binaryDictionary.addUnigramEntry(word, probability, "" /* shortcutTarget */,
BinaryDictionary.NOT_A_PROBABILITY /* shortcutProbability */,
- false /* isNotAWord */, false /* isBlacklisted */,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+ false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isBlacklisted */, BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
}
- private void addBigramWords(final BinaryDictionary binaryDictionary, final String word0,
+ private static void addBigramWords(final BinaryDictionary binaryDictionary, final String word0,
final String word1, final int probability) {
- binaryDictionary.addBigramWords(word0, word1, probability,
+ binaryDictionary.addNgramEntry(new PrevWordsInfo(word0), word1, probability,
BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
}
+ private static boolean isValidBigram(final BinaryDictionary binaryDictionary,
+ final String word0, final String word1) {
+ return binaryDictionary.isValidNgram(new PrevWordsInfo(word0), word1);
+ }
+
+ private static void removeBigramEntry(final BinaryDictionary binaryDictionary,
+ final String word0, final String word1) {
+ binaryDictionary.removeNgramEntry(new PrevWordsInfo(word0), word1);
+ }
+
+ private static int getBigramProbability(final BinaryDictionary binaryDictionary,
+ final String word0, final String word1) {
+ return binaryDictionary.getNgramProbability(new PrevWordsInfo(word0), word1);
+ }
+
public void testAddUnigramWord() {
for (final int formatVersion : DICT_FORMAT_VERSIONS) {
testAddUnigramWord(formatVersion);
@@ -312,32 +332,32 @@ public class BinaryDictionaryTests extends AndroidTestCase {
addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability);
addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability);
- assertTrue(binaryDictionary.isValidBigram("aaa", "abb"));
- assertTrue(binaryDictionary.isValidBigram("aaa", "bcc"));
- assertTrue(binaryDictionary.isValidBigram("abb", "aaa"));
- assertTrue(binaryDictionary.isValidBigram("abb", "bcc"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc"));
+ assertTrue(isValidBigram(binaryDictionary, "abb", "aaa"));
+ assertTrue(isValidBigram(binaryDictionary, "abb", "bcc"));
if (canCheckBigramProbability(formatVersion)) {
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("aaa", "abb"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("aaa", "bcc"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("abb", "aaa"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("abb", "bcc"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "abb"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bcc"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "aaa"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "bcc"));
}
addBigramWords(binaryDictionary, "aaa", "abb", updatedBigramProbability);
if (canCheckBigramProbability(formatVersion)) {
assertEquals(updatedBigramProbability,
- binaryDictionary.getBigramProbability("aaa", "abb"));
+ getBigramProbability(binaryDictionary, "aaa", "abb"));
}
- assertFalse(binaryDictionary.isValidBigram("bcc", "aaa"));
- assertFalse(binaryDictionary.isValidBigram("bcc", "bbc"));
- assertFalse(binaryDictionary.isValidBigram("aaa", "aaa"));
+ assertFalse(isValidBigram(binaryDictionary, "bcc", "aaa"));
+ assertFalse(isValidBigram(binaryDictionary, "bcc", "bbc"));
+ assertFalse(isValidBigram(binaryDictionary, "aaa", "aaa"));
assertEquals(Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.getBigramProbability("bcc", "aaa"));
+ getBigramProbability(binaryDictionary, "bcc", "aaa"));
assertEquals(Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.getBigramProbability("bcc", "bbc"));
+ getBigramProbability(binaryDictionary, "bcc", "bbc"));
assertEquals(Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.getBigramProbability("aaa", "aaa"));
+ getBigramProbability(binaryDictionary, "aaa", "aaa"));
// Testing bigram link.
addUnigramWord(binaryDictionary, "abcde", unigramProbability);
@@ -349,14 +369,14 @@ public class BinaryDictionaryTests extends AndroidTestCase {
if (canCheckBigramProbability(formatVersion)) {
assertEquals(bigramProbability,
- binaryDictionary.getBigramProbability("abcde", "fghij"));
+ getBigramProbability(binaryDictionary, "abcde", "fghij"));
}
assertEquals(Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.getBigramProbability("abcde", "fgh"));
+ getBigramProbability(binaryDictionary, "abcde", "fgh"));
addBigramWords(binaryDictionary, "abcde", "fghij", updatedBigramProbability);
if (canCheckBigramProbability(formatVersion)) {
assertEquals(updatedBigramProbability,
- binaryDictionary.getBigramProbability("abcde", "fghij"));
+ getBigramProbability(binaryDictionary, "abcde", "fghij"));
}
dictFile.delete();
@@ -418,10 +438,10 @@ public class BinaryDictionaryTests extends AndroidTestCase {
for (final Pair<String, String> bigram : bigramWords) {
final int bigramProbability = bigramProbabilities.get(bigram);
assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.isValidBigram(bigram.first, bigram.second));
+ isValidBigram(binaryDictionary, bigram.first, bigram.second));
if (canCheckBigramProbability(formatVersion)) {
assertEquals(bigramProbability,
- binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+ getBigramProbability(binaryDictionary, bigram.first, bigram.second));
}
}
@@ -454,28 +474,28 @@ public class BinaryDictionaryTests extends AndroidTestCase {
addBigramWords(binaryDictionary, "abb", "aaa", bigramProbability);
addBigramWords(binaryDictionary, "abb", "bcc", bigramProbability);
- assertTrue(binaryDictionary.isValidBigram("aaa", "abb"));
- assertTrue(binaryDictionary.isValidBigram("aaa", "bcc"));
- assertTrue(binaryDictionary.isValidBigram("abb", "aaa"));
- assertTrue(binaryDictionary.isValidBigram("abb", "bcc"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "bcc"));
+ assertTrue(isValidBigram(binaryDictionary, "abb", "aaa"));
+ assertTrue(isValidBigram(binaryDictionary, "abb", "bcc"));
- binaryDictionary.removeBigramWords("aaa", "abb");
- assertFalse(binaryDictionary.isValidBigram("aaa", "abb"));
+ removeBigramEntry(binaryDictionary, "aaa", "abb");
+ assertFalse(isValidBigram(binaryDictionary, "aaa", "abb"));
addBigramWords(binaryDictionary, "aaa", "abb", bigramProbability);
- assertTrue(binaryDictionary.isValidBigram("aaa", "abb"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "abb"));
- binaryDictionary.removeBigramWords("aaa", "bcc");
- assertFalse(binaryDictionary.isValidBigram("aaa", "bcc"));
- binaryDictionary.removeBigramWords("abb", "aaa");
- assertFalse(binaryDictionary.isValidBigram("abb", "aaa"));
- binaryDictionary.removeBigramWords("abb", "bcc");
- assertFalse(binaryDictionary.isValidBigram("abb", "bcc"));
+ 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"));
- binaryDictionary.removeBigramWords("aaa", "abb");
+ removeBigramEntry(binaryDictionary, "aaa", "abb");
// Test remove non-existing bigram operation.
- binaryDictionary.removeBigramWords("aaa", "abb");
- binaryDictionary.removeBigramWords("bcc", "aaa");
+ removeBigramEntry(binaryDictionary, "aaa", "abb");
+ removeBigramEntry(binaryDictionary, "bcc", "aaa");
dictFile.delete();
}
@@ -570,14 +590,14 @@ public class BinaryDictionaryTests extends AndroidTestCase {
assertEquals(unigramProbability, binaryDictionary.getFrequency("abb"));
assertEquals(unigramProbability, binaryDictionary.getFrequency("bcc"));
if (canCheckBigramProbability(formatVersion)) {
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("aaa", "abb"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("aaa", "bcc"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("abb", "aaa"));
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("abb", "bcc"));
- }
- assertFalse(binaryDictionary.isValidBigram("bcc", "aaa"));
- assertFalse(binaryDictionary.isValidBigram("bcc", "bbc"));
- assertFalse(binaryDictionary.isValidBigram("aaa", "aaa"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "abb"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bcc"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "aaa"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "abb", "bcc"));
+ }
+ assertFalse(isValidBigram(binaryDictionary, "bcc", "aaa"));
+ assertFalse(isValidBigram(binaryDictionary, "bcc", "bbc"));
+ assertFalse(isValidBigram(binaryDictionary, "aaa", "aaa"));
binaryDictionary.flushWithGC();
binaryDictionary.close();
@@ -649,10 +669,10 @@ public class BinaryDictionaryTests extends AndroidTestCase {
for (final Pair<String, String> bigram : bigramWords) {
final int bigramProbability = bigramProbabilities.get(bigram);
assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.isValidBigram(bigram.first, bigram.second));
+ isValidBigram(binaryDictionary, bigram.first, bigram.second));
if (canCheckBigramProbability(formatVersion)) {
assertEquals(bigramProbability,
- binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+ getBigramProbability(binaryDictionary, bigram.first, bigram.second));
}
}
@@ -742,7 +762,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final Pair<String, String> bigram = bigramWords.get(bigramIndex);
bigramWords.remove(bigramIndex);
bigramProbabilities.remove(bigram);
- binaryDictionary.removeBigramWords(bigram.first, bigram.second);
+ removeBigramEntry(binaryDictionary, bigram.first, bigram.second);
}
}
@@ -765,10 +785,10 @@ public class BinaryDictionaryTests extends AndroidTestCase {
if (canCheckBigramProbability(formatVersion)) {
assertEquals(probability,
- binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+ getBigramProbability(binaryDictionary, bigram.first, bigram.second));
}
assertEquals(probability != Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.isValidBigram(bigram.first, bigram.second));
+ isValidBigram(binaryDictionary, bigram.first, bigram.second));
}
binaryDictionary.flushWithGC();
binaryDictionary.close();
@@ -946,10 +966,10 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final String word1 = entry.getKey().second;
final int bigramProbability = entry.getValue();
assertEquals(bigramProbability != Dictionary.NOT_A_PROBABILITY,
- binaryDictionary.isValidBigram(word0, word1));
+ isValidBigram(binaryDictionary, word0, word1));
if (canCheckBigramProbability(formatVersion)) {
assertEquals(bigramProbability,
- binaryDictionary.getBigramProbability(word0, word1));
+ getBigramProbability(binaryDictionary, word0, word1));
}
}
}
@@ -993,9 +1013,10 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final boolean isNotAWord = random.nextBoolean();
final boolean isBlacklisted = random.nextBoolean();
// TODO: Add tests for historical info.
- binaryDictionary.addUnigramWord(word, unigramProbability,
+ binaryDictionary.addUnigramEntry(word, unigramProbability,
null /* shortcutTarget */, BinaryDictionary.NOT_A_PROBABILITY,
- isNotAWord, isBlacklisted, BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ false /* isBeginningOfSentence */, isNotAWord, isBlacklisted,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP);
if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
binaryDictionary.flushWithGC();
}
@@ -1023,8 +1044,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int unigramProbability = wordProbabilities.get(word1);
final int bigramProbability =
unigramProbability + random.nextInt(0xFF - unigramProbability);
- binaryDictionary.addBigramWords(word0, word1, bigramProbability,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ addBigramWords(binaryDictionary, word0, word1, bigramProbability);
if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
binaryDictionary.flushWithGC();
}
@@ -1112,8 +1132,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int unigramProbability = wordProbabilitiesToCheckLater.get(word1);
final int bigramProbability =
unigramProbability + random.nextInt(0xFF - unigramProbability);
- binaryDictionary.addBigramWords(word0, word1, bigramProbability,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ addBigramWords(binaryDictionary, word0, word1, bigramProbability);
if (binaryDictionary.needsToRunGC(false /* mindsBlockByGC */)) {
binaryDictionary.flushWithGC();
}
@@ -1174,25 +1193,25 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int unigramProbability = 100;
final int shortcutProbability = 10;
- binaryDictionary.addUnigramWord("aaa", unigramProbability, "zzz",
- shortcutProbability, false /* isNotAWord */, false /* isBlacklisted */,
- 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+ shortcutProbability, false /* isBeginningOfSentence */,
+ false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
WordProperty wordProperty = binaryDictionary.getWordProperty("aaa");
assertEquals(1, wordProperty.mShortcutTargets.size());
assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
assertEquals(shortcutProbability, wordProperty.mShortcutTargets.get(0).getProbability());
final int updatedShortcutProbability = 2;
- binaryDictionary.addUnigramWord("aaa", unigramProbability, "zzz",
- updatedShortcutProbability, false /* isNotAWord */, false /* isBlacklisted */,
- 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "zzz",
+ updatedShortcutProbability, false /* isBeginningOfSentence */,
+ false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
wordProperty = binaryDictionary.getWordProperty("aaa");
assertEquals(1, wordProperty.mShortcutTargets.size());
assertEquals("zzz", wordProperty.mShortcutTargets.get(0).mWord);
assertEquals(updatedShortcutProbability,
wordProperty.mShortcutTargets.get(0).getProbability());
- binaryDictionary.addUnigramWord("aaa", unigramProbability, "yyy",
- shortcutProbability, false /* isNotAWord */, false /* isBlacklisted */,
- 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry("aaa", unigramProbability, "yyy",
+ shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isBlacklisted */, 0 /* timestamp */);
final HashMap<String, Integer> shortcutTargets = new HashMap<String, Integer>();
shortcutTargets.put("zzz", updatedShortcutProbability);
shortcutTargets.put("yyy", shortcutProbability);
@@ -1261,9 +1280,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int shortcutProbability = random.nextInt(0xF);
final String word = words.get(random.nextInt(words.size()));
final int unigramProbability = unigramProbabilities.get(word);
- binaryDictionary.addUnigramWord(word, unigramProbability, shortcutTarget,
- shortcutProbability, false /* isNotAWord */, false /* isBlacklisted */,
- 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry(word, unigramProbability, shortcutTarget,
+ shortcutProbability, false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isBlacklisted */, 0 /* timestamp */);
if (shortcutTargets.containsKey(word)) {
final HashMap<String, Integer> shortcutTargetsOfWord = shortcutTargets.get(word);
shortcutTargetsOfWord.put(shortcutTarget, shortcutProbability);
@@ -1317,14 +1336,15 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int bigramProbability = 150;
addBigramWords(binaryDictionary, "aaa", "bbb", bigramProbability);
final int shortcutProbability = 10;
- binaryDictionary.addUnigramWord("ccc", unigramProbability, "xxx", shortcutProbability,
- false /* isNotAWord */, false /* isBlacklisted */, 0 /* timestamp */);
- binaryDictionary.addUnigramWord("ddd", unigramProbability, null /* shortcutTarget */,
- Dictionary.NOT_A_PROBABILITY, true /* isNotAWord */,
- true /* isBlacklisted */, 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry("ccc", unigramProbability, "xxx", shortcutProbability,
+ false /* isBeginningOfSentence */, false /* isNotAWord */,
+ false /* isBlacklisted */, 0 /* timestamp */);
+ binaryDictionary.addUnigramEntry("ddd", unigramProbability, null /* shortcutTarget */,
+ Dictionary.NOT_A_PROBABILITY, false /* isBeginningOfSentence */,
+ true /* isNotAWord */, true /* isBlacklisted */, 0 /* timestamp */);
assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
- assertTrue(binaryDictionary.isValidBigram("aaa", "bbb"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "bbb"));
assertEquals(fromFormatVersion, binaryDictionary.getFormatVersion());
assertTrue(binaryDictionary.migrateTo(toFormatVersion));
assertTrue(binaryDictionary.isValidDictionary());
@@ -1332,9 +1352,9 @@ public class BinaryDictionaryTests extends AndroidTestCase {
assertEquals(unigramProbability, binaryDictionary.getFrequency("aaa"));
assertEquals(unigramProbability, binaryDictionary.getFrequency("bbb"));
if (canCheckBigramProbability(toFormatVersion)) {
- assertEquals(bigramProbability, binaryDictionary.getBigramProbability("aaa", "bbb"));
+ assertEquals(bigramProbability, getBigramProbability(binaryDictionary, "aaa", "bbb"));
}
- assertTrue(binaryDictionary.isValidBigram("aaa", "bbb"));
+ assertTrue(isValidBigram(binaryDictionary, "aaa", "bbb"));
WordProperty wordProperty = binaryDictionary.getWordProperty("ccc");
assertEquals(1, wordProperty.mShortcutTargets.size());
assertEquals("xxx", wordProperty.mShortcutTargets.get(0).mWord);
@@ -1395,8 +1415,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
final int unigramProbability = unigramProbabilities.get(word1);
final int bigramProbability =
random.nextInt(0xFF - unigramProbability) + unigramProbability;
- binaryDictionary.addBigramWords(word0, word1, bigramProbability,
- BinaryDictionary.NOT_A_VALID_TIMESTAMP);
+ addBigramWords(binaryDictionary, word0, word1, bigramProbability);
if (binaryDictionary.needsToRunGC(true /* mindsBlockByGC */)) {
binaryDictionary.flushWithGC();
}
@@ -1415,11 +1434,53 @@ public class BinaryDictionaryTests extends AndroidTestCase {
for (final Pair<String, String> bigram : bigrams) {
if (canCheckBigramProbability(toFormatVersion)) {
assertEquals((int)bigramProbabilities.get(bigram),
- binaryDictionary.getBigramProbability(bigram.first, bigram.second));
+ getBigramProbability(binaryDictionary, bigram.first, bigram.second));
}
- assertTrue(binaryDictionary.isValidBigram(bigram.first, bigram.second));
+ assertTrue(isValidBigram(binaryDictionary, bigram.first, bigram.second));
}
assertEquals(bigramProbabilities.size(), Integer.parseInt(
binaryDictionary.getPropertyForTest(BinaryDictionary.BIGRAM_COUNT_QUERY)));
}
+
+ public void testBeginningOfSentence() {
+ for (final int formatVersion : DICT_FORMAT_VERSIONS) {
+ if (supportsBeginningOfSentence(formatVersion)) {
+ testBeginningOfSentence(formatVersion);
+ }
+ }
+ }
+
+ private void testBeginningOfSentence(final int formatVersion) {
+ File dictFile = null;
+ try {
+ dictFile = createEmptyDictionaryAndGetFile("TestBinaryDictionary", formatVersion);
+ } catch (IOException e) {
+ fail("IOException while writing an initial dictionary : " + e);
+ }
+ final BinaryDictionary binaryDictionary = new BinaryDictionary(dictFile.getAbsolutePath(),
+ 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 int bigramProbability = 200;
+ addUnigramWord(binaryDictionary, "aaa", dummyProbability);
+ binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+ assertEquals(bigramProbability,
+ binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
+ binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "aaa", bigramProbability,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+ addUnigramWord(binaryDictionary, "bbb", dummyProbability);
+ binaryDictionary.addNgramEntry(prevWordsInfoStartOfSentence, "bbb", bigramProbability,
+ BinaryDictionary.NOT_A_VALID_TIMESTAMP /* timestamp */);
+ binaryDictionary.flushWithGC();
+ assertEquals(bigramProbability,
+ binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "aaa"));
+ assertEquals(bigramProbability,
+ binaryDictionary.getNgramProbability(prevWordsInfoStartOfSentence, "bbb"));
+ }
}