Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3b93cc9 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Migrate to Android Testing Support Lib (part 5/N)

This CL converts 19 test classes under com.android.inputmethod.latin
to Android Testing Support Library.

Bug: 110805255
Test: verified as follows. No new test failures.
        tapas adb LatinIME LatinIMETests arm64 userdebug && \
        DISABLE_PROGUARD=true make -j LatinIME && \
        adb install -r $OUT/system/app/LatinIME/LatinIME.apk && \
        atest LatinIMETests:com.android.inputmethod.latin
Change-Id: I878fcae0126f57c43a644af341e5a0a8ac8f5cc9
parent a497886d
Loading
Loading
Loading
Loading
+38 −10
Original line number Diff line number Diff line
@@ -16,8 +16,14 @@

package com.android.inputmethod.latin;

import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.TextUtils;
import android.util.Pair;

@@ -38,27 +44,31 @@ import java.util.HashSet;
import java.util.Locale;
import java.util.Random;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@LargeTest
public class BinaryDictionaryTests extends AndroidTestCase {
@RunWith(AndroidJUnit4.class)
public class BinaryDictionaryTests {
    private static final String TEST_DICT_FILE_EXTENSION = ".testDict";
    private static final String TEST_LOCALE = "test";
    private static final String DICTIONARY_ID = "TestBinaryDictionary";

    private HashSet<File> mDictFilesToBeDeleted = new HashSet<>();

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    @Before
    public void setUp() throws Exception {
        mDictFilesToBeDeleted.clear();
    }

    @Override
    protected void tearDown() throws Exception {
    @After
    public void tearDown() throws Exception {
        for (final File dictFile : mDictFilesToBeDeleted) {
            dictFile.delete();
        }
        mDictFilesToBeDeleted.clear();
        super.tearDown();
    }

    private File createEmptyDictionaryAndGetFile(final int formatVersion) {
@@ -82,7 +92,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
    private File createEmptyVer4DictionaryAndGetFile(final int formatVersion,
            final HashMap<String, String> attributeMap) throws IOException {
        final File file = File.createTempFile(DICTIONARY_ID, TEST_DICT_FILE_EXTENSION,
                getContext().getCacheDir());
                InstrumentationRegistry.getTargetContext().getCacheDir());
        file.delete();
        file.mkdir();
        if (BinaryDictionaryUtils.createEmptyDictFile(file.getAbsolutePath(), formatVersion,
@@ -106,6 +116,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
                Locale.getDefault(), TEST_LOCALE, true /* isUpdatable */);
    }

    @Test
    public void testIsValidDictionary() {
        final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403);
        BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile);
@@ -121,6 +132,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        binaryDictionary.close();
    }

    @Test
    public void testConstructingDictionaryOnMemory() {
        final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403);
        FileUtils.deleteRecursively(dictFile);
@@ -142,6 +154,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        binaryDictionary.close();
    }

    @Test
    public void testAddTooLongWord() {
        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
        final StringBuffer stringBuilder = new StringBuffer();
@@ -209,6 +222,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
                new NgramContext(new WordInfo(word1), new WordInfo(word0)), word2);
    }

    @Test
    public void testAddUnigramWord() {
        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
        final int probability = 100;
@@ -236,6 +250,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        assertEquals(updatedProbability, binaryDictionary.getFrequency("aaa"));
    }

    @Test
    public void testRandomlyAddUnigramWord() {
        final int wordCount = 1000;
        final int codePointSetSize = 50;
@@ -258,6 +273,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testAddBigramWords() {
        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);

@@ -311,6 +327,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
                getBigramProbability(binaryDictionary, "abcde", "fghij"));
    }

    @Test
    public void testRandomlyAddBigramWords() {
        final int wordCount = 100;
        final int bigramCount = 1000;
@@ -357,6 +374,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testAddTrigramWords() {
        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
        final int unigramProbability = 100;
@@ -383,6 +401,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
                getTrigramProbability(binaryDictionary, "bcc", "abb", "aaa"));
    }

    @Test
    public void testFlushDictionary() {
        final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403);
        BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile);
@@ -417,6 +436,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        binaryDictionary.close();
    }

    @Test
    public void testFlushWithGCDictionary() {
        final File dictFile = createEmptyDictionaryAndGetFile(FormatSpec.VERSION403);
        BinaryDictionary binaryDictionary = getBinaryDictionary(dictFile);
@@ -447,6 +467,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        binaryDictionary.close();
    }

    @Test
    public void testAddBigramWordsAndFlashWithGC() {
        final int wordCount = 100;
        final int bigramCount = 1000;
@@ -499,6 +520,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testRandomOperationsAndFlashWithGC() {
        final int maxUnigramCount = 5000;
        final int maxBigramCount = 10000;
@@ -593,6 +615,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testAddManyUnigramsAndFlushWithGC() {
        final int flashWithGCIterationCount = 3;
        final int codePointSetSize = 50;
@@ -628,6 +651,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testUnigramAndBigramCount() {
        final int maxUnigramCount = 5000;
        final int maxBigramCount = 10000;
@@ -684,6 +708,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testGetWordProperties() {
        final long seed = System.currentTimeMillis();
        final Random random = new Random(seed);
@@ -769,6 +794,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        }
    }

    @Test
    public void testIterateAllWords() {
        final long seed = System.currentTimeMillis();
        final Random random = new Random(seed);
@@ -852,6 +878,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        assertTrue(bigramSet.isEmpty());
    }

    @Test
    public void testPossiblyOffensiveAttributeMaintained() {
        final BinaryDictionary binaryDictionary =
                getEmptyBinaryDictionary(FormatSpec.VERSION403);
@@ -860,6 +887,7 @@ public class BinaryDictionaryTests extends AndroidTestCase {
        assertEquals(true, wordProperty.mIsPossiblyOffensive);
    }

    @Test
    public void testBeginningOfSentence() {
        final BinaryDictionary binaryDictionary = getEmptyBinaryDictionary(FormatSpec.VERSION403);
        final int dummyProbability = 0;
+20 −10
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

package com.android.inputmethod.latin;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
@@ -23,34 +27,38 @@ import android.database.MatrixCursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.test.AndroidTestCase;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.test.RenamingDelegatingContext;
import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.inputmethod.latin.ContactsDictionaryConstants;
import com.android.inputmethod.latin.ContactsManager;

import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Tests for {@link ContactsManager}
 */
@SmallTest
public class ContactsManagerTest extends AndroidTestCase {
@RunWith(AndroidJUnit4.class)
public class ContactsManagerTest {

    private ContactsManager mManager;
    private FakeContactsContentProvider mFakeContactsContentProvider;
    private MatrixCursor mMatrixCursor;

    private final static float EPSILON = 0.00001f;

    @Before
    @Override
    public void setUp() throws Exception {
        // Fake content provider
        mFakeContactsContentProvider = new FakeContactsContentProvider();
@@ -59,7 +67,8 @@ public class ContactsManagerTest extends AndroidTestCase {
        final MockContentResolver contentResolver = new MockContentResolver();
        contentResolver.addProvider(ContactsContract.AUTHORITY, mFakeContactsContentProvider);
        // Add the fake content resolver to a fake context.
        final ContextWithMockContentResolver context = new ContextWithMockContentResolver(mContext);
        final ContextWithMockContentResolver context =
                new ContextWithMockContentResolver(InstrumentationRegistry.getTargetContext());
        context.setContentResolver(contentResolver);

        mManager = new ContactsManager(context);
@@ -113,9 +122,10 @@ public class ContactsManagerTest extends AndroidTestCase {
        cursor.moveToFirst();
        ContactsManager.RankedContact contact = new ContactsManager.RankedContact(cursor);
        contact.computeAffinity(1, month_ago);
        assertEquals(contact.getAffinity(), 1.0f);
        assertEquals(contact.getAffinity(), 1.0f, EPSILON);
        contact.computeAffinity(2, now);
        assertEquals(contact.getAffinity(), (2.0f/3.0f + (float)Math.pow(0.5, 3) + 1.0f) / 3);
        assertEquals(contact.getAffinity(), (2.0f/3.0f + (float)Math.pow(0.5, 3) + 1.0f) / 3,
                EPSILON);
    }

    @Test
+14 −4
Original line number Diff line number Diff line
@@ -16,16 +16,26 @@

package com.android.inputmethod.latin;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.Locale;

import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.LargeTest;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

@LargeTest
public class DictionaryFacilitatorLruCacheTests extends AndroidTestCase {
@RunWith(AndroidJUnit4.class)
public class DictionaryFacilitatorLruCacheTests {

    @Test
    public void testGetFacilitator() {
        final DictionaryFacilitatorLruCache cache =
                new DictionaryFacilitatorLruCache(getContext(), "");
                new DictionaryFacilitatorLruCache(InstrumentationRegistry.getTargetContext(), "");

        final DictionaryFacilitator dictionaryFacilitatorEnUs = cache.get(Locale.US);
        assertNotNull(dictionaryFacilitatorEnUs);
+20 −4
Original line number Diff line number Diff line
@@ -16,15 +16,26 @@

package com.android.inputmethod.latin;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import com.android.inputmethod.latin.NgramContext.WordInfo;
import com.android.inputmethod.latin.settings.SpacingAndPunctuations;
import com.android.inputmethod.latin.utils.NgramContextUtils;

import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

@SmallTest
public class NgramContextTests extends AndroidTestCase {
@RunWith(AndroidJUnit4.class)
public class NgramContextTests {

    @Test
    public void testConstruct() {
        assertEquals(new NgramContext(new WordInfo("a")), new NgramContext(new WordInfo("a")));
        assertEquals(new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO),
@@ -35,6 +46,7 @@ public class NgramContextTests extends AndroidTestCase {
                new NgramContext(WordInfo.EMPTY_WORD_INFO));
    }

    @Test
    public void testIsBeginningOfSentenceContext() {
        assertFalse(new NgramContext().isBeginningOfSentenceContext());
        assertTrue(new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO)
@@ -52,6 +64,7 @@ public class NgramContextTests extends AndroidTestCase {
                .isBeginningOfSentenceContext());
    }

    @Test
    public void testGetNextNgramContext() {
        final NgramContext ngramContext_a = new NgramContext(new WordInfo("a"));
        final NgramContext ngramContext_b_a =
@@ -67,6 +80,7 @@ public class NgramContextTests extends AndroidTestCase {
        assertEquals("c", ngramContext_c_bos.getNthPrevWord(1));
    }

    @Test
    public void testExtractPrevWordsContextTest() {
        final NgramContext ngramContext_bos =
                new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
@@ -92,6 +106,7 @@ public class NgramContextTests extends AndroidTestCase {
        assertEquals("a", ngramContext_a_empty.extractPrevWordsContext());
    }

    @Test
    public void testExtractPrevWordsContextArray() {
        final NgramContext ngramContext_bos =
                new NgramContext(WordInfo.BEGINNING_OF_SENTENCE_WORD_INFO);
@@ -123,9 +138,10 @@ public class NgramContextTests extends AndroidTestCase {
        assertEquals("a", ngramContext_a_empty.extractPrevWordsContextArray()[0]);
    }

    @Test
    public void testGetNgramContextFromNthPreviousWord() {
        SpacingAndPunctuations spacingAndPunctuations = new SpacingAndPunctuations(
                mContext.getResources());
                InstrumentationRegistry.getTargetContext().getResources());
        assertEquals("<S>", NgramContextUtils.getNgramContextFromNthPreviousWord("",
                spacingAndPunctuations, 1).extractPrevWordsContext());
        assertEquals("<S> b", NgramContextUtils.getNgramContextFromNthPreviousWord("a. b ",
+26 −14
Original line number Diff line number Diff line
@@ -16,12 +16,16 @@

package com.android.inputmethod.latin;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import android.content.res.Resources;
import android.inputmethodservice.InputMethodService;
import android.os.Parcel;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.SmallTest;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.SuggestionSpan;
@@ -40,23 +44,27 @@ import com.android.inputmethod.latin.utils.TextRange;

import java.util.Locale;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@SmallTest
public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
@RunWith(AndroidJUnit4.class)
public class RichInputConnectionAndTextRangeTests {

    // The following is meant to be a reasonable default for
    // the "word_separators" resource.
    private SpacingAndPunctuations mSpacingAndPunctuations;

    @Override
    protected void setUp() throws Exception {
        super.setUp();
    @Before
    public void setUp() throws Exception {
        final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() {
            @Override
            protected SpacingAndPunctuations job(final Resources res) {
                return new SpacingAndPunctuations(res);
            }
        };
        final Resources res = getContext().getResources();
        final Resources res = InstrumentationRegistry.getTargetContext().getResources();
        mSpacingAndPunctuations = job.runInLocale(res, Locale.ENGLISH);
    }

@@ -156,6 +164,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
    /**
     * Test for getting previous word (for bigram suggestions)
     */
    @Test
    public void testGetPreviousWord() {
        // If one of the following cases breaks, the bigram suggestions won't work.
        assertEquals(NgramContextUtils.getNgramContextFromNthPreviousWord(
@@ -218,6 +227,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
                "abc 'def", mSpacingAndPunctuations, 2), NgramContext.EMPTY_PREV_WORDS_INFO);
    }

    @Test
    public void testGetWordRangeAtCursor() {
        /**
         * Test logic in getting the word range at the cursor.
@@ -282,6 +292,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
    /**
     * Test logic in getting the word range at the cursor.
     */
    @Test
    public void testGetSuggestionSpansAtWord() {
        helpTestGetSuggestionSpansAtWord(10);
        helpTestGetSuggestionSpansAtWord(12);
@@ -309,7 +320,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
        suggestions = r.getSuggestionSpansAtWord();
        assertEquals(suggestions.length, 1);
        MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);

        // Test the case with 2 suggestion spans in the same place.
        text = new SpannableString("This is a string for test");
@@ -321,8 +332,8 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
        suggestions = r.getSuggestionSpansAtWord();
        assertEquals(suggestions.length, 2);
        MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        MoreAsserts.assertEquals(suggestions[1].getSuggestions(), SUGGESTIONS2);
        assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        assertEquals(suggestions[1].getSuggestions(), SUGGESTIONS2);

        // Test a case with overlapping spans, 2nd extending past the start of the word
        text = new SpannableString("This is a string for test");
@@ -334,7 +345,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
        suggestions = r.getSuggestionSpansAtWord();
        assertEquals(suggestions.length, 1);
        MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);

        // Test a case with overlapping spans, 2nd extending past the end of the word
        text = new SpannableString("This is a string for test");
@@ -346,7 +357,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
        suggestions = r.getSuggestionSpansAtWord();
        assertEquals(suggestions.length, 1);
        MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);

        // Test a case with overlapping spans, 2nd extending past both ends of the word
        text = new SpannableString("This is a string for test");
@@ -358,7 +369,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        r = ic.getWordRangeAtCursor(SPACE, ScriptUtils.SCRIPT_LATIN);
        suggestions = r.getSuggestionSpansAtWord();
        assertEquals(suggestions.length, 1);
        MoreAsserts.assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);
        assertEquals(suggestions[0].getSuggestions(), SUGGESTIONS1);

        // Test a case with overlapping spans, none right on the word
        text = new SpannableString("This is a string for test");
@@ -372,6 +383,7 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
        assertEquals(suggestions.length, 0);
    }

    @Test
    public void testCursorTouchingWord() {
        final MockInputMethodService ims = new MockInputMethodService();
        final RichInputConnection ic = new RichInputConnection(ims);
Loading