am f88ec161: Merge "Fix unit tests."

* commit 'f88ec161e9aeeac8a65f4343517d7c824f20fe49':
  Fix unit tests.
main
Keisuke Kuroyanagi 2014-09-19 10:16:51 +00:00 committed by Android Git Automerger
commit 68c78b83b7
2 changed files with 26 additions and 5 deletions

View File

@ -132,7 +132,8 @@ public class PrevWordsInfo {
@Override @Override
public int hashCode() { public int hashCode() {
return Arrays.hashCode(mPrevWordsInfo); // Just for having equals().
return mPrevWordsInfo[0].hashCode();
} }
@Override @Override
@ -140,7 +141,23 @@ public class PrevWordsInfo {
if (this == o) return true; if (this == o) return true;
if (!(o instanceof PrevWordsInfo)) return false; if (!(o instanceof PrevWordsInfo)) return false;
final PrevWordsInfo prevWordsInfo = (PrevWordsInfo)o; final PrevWordsInfo prevWordsInfo = (PrevWordsInfo)o;
return Arrays.equals(mPrevWordsInfo, prevWordsInfo.mPrevWordsInfo);
final int minLength = Math.min(mPrevWordsInfo.length, prevWordsInfo.mPrevWordsInfo.length);
for (int i = 0; i < minLength; i++) {
if (!mPrevWordsInfo[i].equals(prevWordsInfo.mPrevWordsInfo[i])) {
return false;
}
}
final WordInfo[] longerWordsInfo =
(mPrevWordsInfo.length > prevWordsInfo.mPrevWordsInfo.length) ?
mPrevWordsInfo : prevWordsInfo.mPrevWordsInfo;
for (int i = minLength; i < longerWordsInfo.length; i++) {
if (longerWordsInfo[i] != null
&& !WordInfo.EMPTY_WORD_INFO.equals(longerWordsInfo[i])) {
return false;
}
}
return true;
} }
@Override @Override
@ -151,7 +168,11 @@ public class PrevWordsInfo {
builder.append("PrevWord["); builder.append("PrevWord[");
builder.append(i); builder.append(i);
builder.append("]: "); builder.append("]: ");
if (wordInfo == null || !wordInfo.isValid()) { if (wordInfo == null) {
builder.append("null. ");
continue;
}
if (!wordInfo.isValid()) {
builder.append("Empty. "); builder.append("Empty. ");
continue; continue;
} }

View File

@ -16,6 +16,7 @@
package com.android.inputmethod.latin.utils; package com.android.inputmethod.latin.utils;
import java.util.Arrays;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import com.android.inputmethod.latin.Constants; import com.android.inputmethod.latin.Constants;
@ -56,6 +57,7 @@ public final class PrevWordsInfoUtils {
if (prev == null) return PrevWordsInfo.EMPTY_PREV_WORDS_INFO; if (prev == null) return PrevWordsInfo.EMPTY_PREV_WORDS_INFO;
final String[] w = SPACE_REGEX.split(prev); final String[] w = SPACE_REGEX.split(prev);
final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM]; final WordInfo[] prevWordsInfo = new WordInfo[Constants.MAX_PREV_WORD_COUNT_FOR_N_GRAM];
Arrays.fill(prevWordsInfo, WordInfo.EMPTY_WORD_INFO);
for (int i = 0; i < prevWordsInfo.length; i++) { for (int i = 0; i < prevWordsInfo.length; i++) {
final int focusedWordIndex = w.length - n - i; final int focusedWordIndex = w.length - n - i;
// Referring to the word after the focused word. // Referring to the word after the focused word.
@ -66,7 +68,6 @@ public final class PrevWordsInfoUtils {
if (spacingAndPunctuations.isWordConnector(firstChar)) { if (spacingAndPunctuations.isWordConnector(firstChar)) {
// The word following the focused word is starting with a word connector. // The word following the focused word is starting with a word connector.
// TODO: Return meaningful context for this case. // TODO: Return meaningful context for this case.
prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
break; break;
} }
} }
@ -93,7 +94,6 @@ public final class PrevWordsInfoUtils {
// TODO: Return meaningful context for this case. // TODO: Return meaningful context for this case.
if (spacingAndPunctuations.isWordSeparator(lastChar) if (spacingAndPunctuations.isWordSeparator(lastChar)
|| spacingAndPunctuations.isWordConnector(lastChar)) { || spacingAndPunctuations.isWordConnector(lastChar)) {
prevWordsInfo[i] = WordInfo.EMPTY_WORD_INFO;
break; break;
} }
prevWordsInfo[i] = new WordInfo(focusedWord); prevWordsInfo[i] = new WordInfo(focusedWord);