diff options
author | 2014-11-14 00:46:36 +0000 | |
---|---|---|
committer | 2014-11-14 00:46:37 +0000 | |
commit | d60f9c046e6e0ce8d3b04f93506f553f22af6240 (patch) | |
tree | cb007e562a82d80b018007eb038f7eaa4843af87 /tests | |
parent | 80c4e0f68a1c7444f3394df8c15f53c420b99792 (diff) | |
parent | 5365191a9d850362f41eedf3f95adb5c80cceb8f (diff) | |
download | latinime-d60f9c046e6e0ce8d3b04f93506f553f22af6240.tar.gz latinime-d60f9c046e6e0ce8d3b04f93506f553f22af6240.tar.xz latinime-d60f9c046e6e0ce8d3b04f93506f553f22af6240.zip |
Merge "Implement UserHistoryDictionary for each user account."
Diffstat (limited to 'tests')
-rw-r--r-- | tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java index 813a71239..a84df28c9 100644 --- a/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java +++ b/tests/src/com/android/inputmethod/latin/personalization/UserHistoryDictionaryTests.java @@ -16,6 +16,8 @@ package com.android.inputmethod.latin.personalization; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; import android.util.Log; @@ -24,6 +26,7 @@ import com.android.inputmethod.latin.ExpandableBinaryDictionary; import com.android.inputmethod.latin.NgramContext; import com.android.inputmethod.latin.NgramContext.WordInfo; import com.android.inputmethod.latin.common.FileUtils; +import com.android.inputmethod.latin.settings.LocalSettingsConstants; import com.android.inputmethod.latin.utils.BinaryDictionaryUtils; import com.android.inputmethod.latin.utils.DistracterFilter; @@ -36,6 +39,8 @@ import java.util.Locale; import java.util.Random; import java.util.concurrent.TimeUnit; +import javax.annotation.Nullable; + /** * Unit tests for UserHistoryDictionary */ @@ -44,6 +49,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { private static final String TAG = UserHistoryDictionaryTests.class.getSimpleName(); private static final int WAIT_FOR_WRITING_FILE_IN_MILLISECONDS = 3000; private static final String TEST_LOCALE_PREFIX = "test_"; + private static final String TEST_ACCOUNT = "account@example.com"; private static final String[] CHARACTERS = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", @@ -52,15 +58,18 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { private int mCurrentTime = 0; + private SharedPreferences mPrefs; + private String mLastKnownAccount = null; + private void removeAllTestDictFiles() { final Locale dummyLocale = new Locale(TEST_LOCALE_PREFIX); - final String dictName = ExpandableBinaryDictionary.getDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */); + final String dictName = UserHistoryDictionary.getUserHistoryDictName( + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final FilenameFilter filenameFilter = new FilenameFilter() { @Override - public boolean accept(File dir, String filename) { + public boolean accept(final File dir, final String filename) { return filename.startsWith(UserHistoryDictionary.NAME + "." + TEST_LOCALE_PREFIX); } }; @@ -99,6 +108,12 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { @Override protected void setUp() throws Exception { super.setUp(); + + mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + // Keep track of the current account so that we restore it when the test finishes. + mLastKnownAccount = mPrefs.getString(LocalSettingsConstants.PREF_ACCOUNT_NAME, null); + updateAccountName(TEST_ACCOUNT); + resetCurrentTimeForTestMode(); removeAllTestDictFiles(); } @@ -107,6 +122,10 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { protected void tearDown() throws Exception { removeAllTestDictFiles(); stopTestModeInNativeCode(); + + // Restore the account that was present before running the test. + updateAccountName(mLastKnownAccount); + super.tearDown(); } @@ -115,6 +134,14 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { setCurrentTimeForTestMode(mCurrentTime); } + private void updateAccountName(@Nullable final String accountName) { + if (accountName == null) { + mPrefs.edit().remove(LocalSettingsConstants.PREF_ACCOUNT_NAME).apply(); + } else { + mPrefs.edit().putString(LocalSettingsConstants.PREF_ACCOUNT_NAME, accountName).apply(); + } + } + private void forcePassingShortTime() { // 3 days. final int timeToElapse = (int)TimeUnit.DAYS.toSeconds(3); @@ -142,7 +169,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { */ private static String generateWord(final int value) { final int lengthOfChars = CHARACTERS.length; - StringBuilder builder = new StringBuilder(); + final StringBuilder builder = new StringBuilder(); long lvalue = Math.abs((long)value); while (lvalue > 0) { builder.append(CHARACTERS[(int)(lvalue % lengthOfChars)]); @@ -162,7 +189,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { private static void addToDict(final UserHistoryDictionary dict, final List<String> words, final int timestamp) { NgramContext ngramContext = NgramContext.EMPTY_PREV_WORDS_INFO; - for (String word : words) { + for (final String word : words) { UserHistoryDictionary.addToDictionary(dict, ngramContext, word, true, timestamp, DistracterFilter.EMPTY_DISTRACTER_FILTER); ngramContext = ngramContext.getNextNgramContext(new WordInfo(word)); @@ -204,12 +231,12 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { Log.d(TAG, "This test can be used for profiling."); Log.d(TAG, "Usage: please set UserHistoryDictionary.PROFILE_SAVE_RESTORE to true."); final Locale dummyLocale = getDummyLocale("random_words"); - final String dictName = ExpandableBinaryDictionary.getDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */); + final String dictName = UserHistoryDictionary.getUserHistoryDictName( + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale); + getContext(), dummyLocale, TEST_ACCOUNT); final int numberOfWords = 1000; final Random random = new Random(123456); @@ -232,12 +259,12 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { // Create filename suffixes for this test. for (int i = 0; i < numberOfLanguages; i++) { final Locale dummyLocale = getDummyLocale("switching_languages" + i); - final String dictName = ExpandableBinaryDictionary.getDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */); + final String dictName = UserHistoryDictionary.getUserHistoryDictName( + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); dictFiles[i] = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); dicts[i] = PersonalizationHelper.getUserHistoryDictionary(getContext(), - dummyLocale); + dummyLocale, TEST_ACCOUNT); clearHistory(dicts[i]); } @@ -262,14 +289,14 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { public void testAddManyWords() { final Locale dummyLocale = getDummyLocale("many_random_words"); - final String dictName = ExpandableBinaryDictionary.getDictName( - UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */); + final String dictName = UserHistoryDictionary.getUserHistoryDictName( + UserHistoryDictionary.NAME, dummyLocale, null /* dictFile */, getContext()); final File dictFile = ExpandableBinaryDictionary.getDictFile( mContext, dictName, null /* dictFile */); final int numberOfWords = 10000; final Random random = new Random(123456); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale); + getContext(), dummyLocale, TEST_ACCOUNT); clearHistory(dict); try { addAndWriteRandomWords(dict, numberOfWords, random, true /* checksContents */); @@ -281,7 +308,7 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { public void testDecaying() { final Locale dummyLocale = getDummyLocale("decaying"); final UserHistoryDictionary dict = PersonalizationHelper.getUserHistoryDictionary( - getContext(), dummyLocale); + getContext(), dummyLocale, TEST_ACCOUNT); final int numberOfWords = 5000; final Random random = new Random(123456); resetCurrentTimeForTestMode(); @@ -309,4 +336,9 @@ public class UserHistoryDictionaryTests extends AndroidTestCase { assertFalse(dict.isInDictionary(word)); } } -} + + public void testRandomWords_NullAccount() { + updateAccountName(null); + testRandomWords(); + } +}
\ No newline at end of file |