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
main
Tadashi G. Takaoka 2014-02-21 17:50:07 +09:00
parent d73044a249
commit d28a58c25d
1 changed files with 65 additions and 13 deletions

View File

@ -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);
}
}