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

Commit d28a58c2 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Fix punctuation test for tablet

It seems that some test devices are tablet and some are phone. The
unit test should aware of which device the test is running.

Change-Id: I8651a540993de29aa1cd9f40919dffe7a8df9512
parent d73044a2
Loading
Loading
Loading
Loading
+65 −13
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.content.res.Resources;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;

import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.SuggestedWords;
import com.android.inputmethod.latin.utils.RunInLocale;

@@ -32,6 +34,18 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
    private static final int ARMENIAN_FULL_STOP = '\u0589';
    private static final int ARMENIAN_COMMA = '\u055D';

    private int mScreenMetrics;

    private boolean isPhone() {
        return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_PHONE
                || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_PHONE;
    }

    private boolean isTablet() {
        return mScreenMetrics == Constants.SCREEN_METRICS_SMALL_TABLET
                || mScreenMetrics == Constants.SCREEN_METRICS_LARGE_TABLET;
    }

    private SpacingAndPunctuations ENGLISH;
    private SpacingAndPunctuations FRENCH;
    private SpacingAndPunctuations GERMAN;
@@ -56,6 +70,8 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
    protected void setUp() throws Exception {
        super.setUp();

        mScreenMetrics = mContext.getResources().getInteger(R.integer.config_screen_metrics);

        // Language only
        ENGLISH = getSpacingAndPunctuations(Locale.ENGLISH);
        FRENCH = getSpacingAndPunctuations(Locale.FRENCH);
@@ -373,23 +389,39 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
        assertTrue(SWISS_GERMAN.mUsesGermanRules);
    }

    private static final String[] PUNCTUATION_LABELS_LTR = {
    // Punctuations for phone.
    private static final String[] PUNCTUATION_LABELS_PHONE = {
        "!", "?", ",", ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
    };
    private static final String[] PUNCTUATION_WORDS_LTR = PUNCTUATION_LABELS_LTR;
    private static final String[] PUNCTUATION_WORDS_HEBREW = {
    private static final String[] PUNCTUATION_WORDS_PHONE_LTR = PUNCTUATION_LABELS_PHONE;
    private static final String[] PUNCTUATION_WORDS_PHONE_HEBREW = {
        "!", "?", ",", ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
    };
    // U+061F: "؟" ARABIC QUESTION MARK
    // U+060C: "،" ARABIC COMMA
    // U+061B: "؛" ARABIC SEMICOLON
    private static final String[] PUNCTUATION_LABELS_ARABIC_PERSIAN = {
    private static final String[] PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN = {
        "!", "\u061F", "\u060C", ":", "\u061B", "\"", "(", ")", "'", "-", "/", "@", "_"
    };
    private static final String[] PUNCTUATION_WORDS_ARABIC_PERSIAN = {
    private static final String[] PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN = {
        "!", "\u061F", "\u060C", ":", "\u061B", "\"", ")", "(", "'", "-", "/", "@", "_"
    };

    // Punctuations for tablet.
    private static final String[] PUNCTUATION_LABELS_TABLET = {
        ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_"
    };
    private static final String[] PUNCTUATION_WORDS_TABLET_LTR = PUNCTUATION_LABELS_TABLET;
    private static final String[] PUNCTUATION_WORDS_TABLET_HEBREW = {
        ":", ";", "\"", ")", "(", "'", "-", "/", "@", "_"
    };
    private static final String[] PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN = {
        "!", "\u061F", ":", "\u061B", "\"", "'", "(", ")",  "-", "/", "@", "_"
    };
    private static final String[] PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN = {
        "!", "\u061F", ":", "\u061B", "\"", "'", ")", "(",  "-", "/", "@", "_"
    };

    private static void testingStandardPunctuationSuggestions(final SpacingAndPunctuations sp,
            final String[] punctuationLabels, final String[] punctuationWords) {
        final SuggestedWords suggestedWords = sp.mSuggestPuncList;
@@ -407,19 +439,39 @@ public class SpacingAndPunctuationsTests extends AndroidTestCase {
        }
    }

    // TODO: Add tests for tablet as well
    public void testPunctuationSuggestions() {
    public void testPhonePunctuationSuggestions() {
        if (!isPhone()) {
            return;
        }
        testingStandardPunctuationSuggestions(ENGLISH,
                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
        testingStandardPunctuationSuggestions(FRENCH,
                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
        testingStandardPunctuationSuggestions(GERMAN,
                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR);
        testingStandardPunctuationSuggestions(ARABIC,
                PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
        testingStandardPunctuationSuggestions(PERSIAN,
                PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN);
        testingStandardPunctuationSuggestions(HEBREW,
                PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_HEBREW);
    }

    public void testTabletPunctuationSuggestions() {
        if (!isTablet()) {
            return;
        }
        testingStandardPunctuationSuggestions(ENGLISH,
                PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
        testingStandardPunctuationSuggestions(FRENCH,
                PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
        testingStandardPunctuationSuggestions(GERMAN,
                PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR);
                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR);
        testingStandardPunctuationSuggestions(ARABIC,
                PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN);
                PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
        testingStandardPunctuationSuggestions(PERSIAN,
                PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN);
                PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN);
        testingStandardPunctuationSuggestions(HEBREW,
                PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_HEBREW);
                PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_HEBREW);
    }
}