From d28a58c25de49bb6affa2ec24a3f029ce04f81c0 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 21 Feb 2014 17:50:07 +0900 Subject: [PATCH] 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 --- .../settings/SpacingAndPunctuationsTests.java | 78 +++++++++++++++---- 1 file changed, 65 insertions(+), 13 deletions(-) diff --git a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java index 24af09484..2cc22fae4 100644 --- a/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java +++ b/tests/src/com/android/inputmethod/latin/settings/SpacingAndPunctuationsTests.java @@ -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_LTR, PUNCTUATION_WORDS_LTR); + PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR); testingStandardPunctuationSuggestions(FRENCH, - PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR); + PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR); testingStandardPunctuationSuggestions(GERMAN, - PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_LTR); + PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_LTR); testingStandardPunctuationSuggestions(ARABIC, - PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN); + PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN); testingStandardPunctuationSuggestions(PERSIAN, - PUNCTUATION_LABELS_ARABIC_PERSIAN, PUNCTUATION_WORDS_ARABIC_PERSIAN); + PUNCTUATION_LABELS_PHONE_ARABIC_PERSIAN, PUNCTUATION_WORDS_PHONE_ARABIC_PERSIAN); testingStandardPunctuationSuggestions(HEBREW, - PUNCTUATION_LABELS_LTR, PUNCTUATION_WORDS_HEBREW); + PUNCTUATION_LABELS_PHONE, PUNCTUATION_WORDS_PHONE_HEBREW); + } + + public void testTabletPunctuationSuggestions() { + if (!isTablet()) { + return; + } + testingStandardPunctuationSuggestions(ENGLISH, + PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR); + testingStandardPunctuationSuggestions(FRENCH, + PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR); + testingStandardPunctuationSuggestions(GERMAN, + PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_LTR); + testingStandardPunctuationSuggestions(ARABIC, + PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN); + testingStandardPunctuationSuggestions(PERSIAN, + PUNCTUATION_LABELS_TABLET_ARABIC_PERSIAN, PUNCTUATION_WORDS_TABLET_ARABIC_PERSIAN); + testingStandardPunctuationSuggestions(HEBREW, + PUNCTUATION_LABELS_TABLET, PUNCTUATION_WORDS_TABLET_HEBREW); } }