diff options
Diffstat (limited to 'tests/src')
13 files changed, 1038 insertions, 34 deletions
diff --git a/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java new file mode 100644 index 000000000..c399cced6 --- /dev/null +++ b/tests/src/com/android/inputmethod/compat/TextInfoCompatUtilsTests.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.compat; + +import android.graphics.Typeface; +import android.os.Parcel; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.StyleSpan; +import android.text.style.URLSpan; +import android.view.textservice.TextInfo; + +import java.util.Arrays; + +@SmallTest +public class TextInfoCompatUtilsTests extends AndroidTestCase { + final private static String TEST_TEXT = "0123456789"; + final private static int TEST_COOKIE = 0x1234; + final private static int TEST_SEQUENCE_NUMBER = 0x4321; + final private static int TEST_CHAR_SEQUENCE_START = 1; + final private static int TEST_CHAR_SEQUENCE_END = 6; + final private static StyleSpan TEST_STYLE_SPAN = new StyleSpan(Typeface.BOLD); + final private static int TEST_STYLE_SPAN_START = 4; + final private static int TEST_STYLE_SPAN_END = 5; + final private static int TEST_STYLE_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_INCLUSIVE; + final private static URLSpan TEST_URL_SPAN_URL = new URLSpan("http://example.com"); + final private static int TEST_URL_SPAN_START = 3; + final private static int TEST_URL_SPAN_END = 7; + final private static int TEST_URL_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; + + public void testGetCharSequence() { + final SpannableString text = new SpannableString(TEST_TEXT); + text.setSpan(TEST_STYLE_SPAN, TEST_STYLE_SPAN_START, TEST_STYLE_SPAN_END, + TEST_STYLE_SPAN_FLAGS); + text.setSpan(TEST_URL_SPAN_URL, TEST_URL_SPAN_START, TEST_URL_SPAN_END, + TEST_URL_SPAN_FLAGS); + + final TextInfo textInfo = TextInfoCompatUtils.newInstance(text, + TEST_CHAR_SEQUENCE_START, TEST_CHAR_SEQUENCE_END, TEST_COOKIE, + TEST_SEQUENCE_NUMBER); + final Spanned expectedSpanned = (Spanned) text.subSequence(TEST_CHAR_SEQUENCE_START, + TEST_CHAR_SEQUENCE_END); + final CharSequence actualCharSequence = + TextInfoCompatUtils.getCharSequenceOrString(textInfo); + + // This should be valid even if TextInfo#getCharSequence is not supported. + assertTrue(TextUtils.equals(expectedSpanned, actualCharSequence)); + + if (TextInfoCompatUtils.isCharSequenceSupported()) { + // This is valid only if TextInfo#getCharSequence is supported. + assertTrue("should be Spanned", actualCharSequence instanceof Spanned); + assertTrue(Arrays.equals(marshall(expectedSpanned), marshall(actualCharSequence))); + } + } + + private static byte[] marshall(final CharSequence cahrSequence) { + Parcel parcel = null; + try { + parcel = Parcel.obtain(); + TextUtils.writeToParcel(cahrSequence, parcel, 0); + return parcel.marshall(); + } finally { + if (parcel != null) { + parcel.recycle(); + parcel = null; + } + } + } +} diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java index 6ee6adbba..eb67bc134 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyboardLayoutSetSubtypesCountTests.java @@ -25,7 +25,7 @@ import java.util.ArrayList; @SmallTest public class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase { - private static final int NUMBER_OF_SUBTYPES = 73; + private static final int NUMBER_OF_SUBTYPES = 77; private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 45; private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2; diff --git a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java index f9d98afa2..0c7e4000e 100644 --- a/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java +++ b/tests/src/com/android/inputmethod/keyboard/KeyboardThemeTests.java @@ -16,6 +16,11 @@ package com.android.inputmethod.keyboard; +import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_ICS; +import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_KLP; +import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_DARK; +import static com.android.inputmethod.keyboard.KeyboardTheme.THEME_ID_LXX_LIGHT; + import android.content.SharedPreferences; import android.os.Build.VERSION_CODES; import android.preference.PreferenceManager; @@ -33,9 +38,6 @@ public class KeyboardThemeTests extends AndroidTestCase { private static final int THEME_ID_UNKNOWN = -2; private static final int THEME_ID_ILLEGAL = -3; private static final String ILLEGAL_THEME_ID_STRING = "ThisCausesNumberFormatExecption"; - private static final int THEME_ID_ICS = KeyboardTheme.THEME_ID_ICS; - private static final int THEME_ID_KLP = KeyboardTheme.THEME_ID_KLP; - private static final int THEME_ID_LXX_DARK = KeyboardTheme.THEME_ID_LXX_DARK; @Override protected void setUp() throws Exception { @@ -51,6 +53,7 @@ public class KeyboardThemeTests extends AndroidTestCase { switch (themeId) { case THEME_ID_ICS: case THEME_ID_KLP: + case THEME_ID_LXX_LIGHT: case THEME_ID_LXX_DARK: return true; default: @@ -99,6 +102,7 @@ public class KeyboardThemeTests extends AndroidTestCase { assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId); assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS); assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP); + assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId); assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); @@ -114,10 +118,11 @@ public class KeyboardThemeTests extends AndroidTestCase { } private void assertKeyboardThemePreferenceOnLxx(final int sdkVersion) { - final int defaultThemeId = THEME_ID_LXX_DARK; + final int defaultThemeId = THEME_ID_LXX_LIGHT; assertKeyboardThemePreference(sdkVersion, THEME_ID_NULL, defaultThemeId); assertKeyboardThemePreference(sdkVersion, THEME_ID_ICS, THEME_ID_ICS); assertKeyboardThemePreference(sdkVersion, THEME_ID_KLP, THEME_ID_KLP); + assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); assertKeyboardThemePreference(sdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); assertKeyboardThemePreference(sdkVersion, THEME_ID_UNKNOWN, defaultThemeId); assertKeyboardThemePreference(sdkVersion, THEME_ID_ILLEGAL, defaultThemeId); @@ -169,11 +174,11 @@ public class KeyboardThemeTests extends AndroidTestCase { private void assertDefaultKeyboardThemeOnLxx(final int sdkVersion) { // Forced to switch to LXX theme. - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK); - assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK); + assertDefaultKeyboardTheme(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); + assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT); + assertDefaultKeyboardTheme(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT); + assertDefaultKeyboardTheme(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); + assertDefaultKeyboardTheme(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); } public void testDefaultKeyboardThemeOnLxx() { @@ -234,11 +239,11 @@ public class KeyboardThemeTests extends AndroidTestCase { private void assertUpgradeKeyboardToLxxOnLxx(final int sdkVersion) { // Forced to switch to LXX theme. - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK); - assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK); + assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); + assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT); + assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT); + assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); + assertUpgradeKeyboardToLxxOn(sdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); } // Upgrading keyboard on L. @@ -298,15 +303,15 @@ public class KeyboardThemeTests extends AndroidTestCase { // Forced to switch to LXX theme. final int newSdkVersion = VERSION_CODES_LXX; assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); } // Update platform from I,J, and K to L @@ -324,14 +329,18 @@ public class KeyboardThemeTests extends AndroidTestCase { final int oldSdkVersion = VERSION_CODES_LXX; final int newSdkVersion = VERSION_CODES_LXX; assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_NULL, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( oldSdkVersion, newSdkVersion, THEME_ID_ICS, THEME_ID_ICS); assertUpgradePlatformFromTo( oldSdkVersion, newSdkVersion, THEME_ID_KLP, THEME_ID_KLP); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_LXX_LIGHT, THEME_ID_LXX_LIGHT); + assertUpgradePlatformFromTo( + oldSdkVersion, newSdkVersion, THEME_ID_LXX_DARK, THEME_ID_LXX_DARK); + assertUpgradePlatformFromTo( + oldSdkVersion, newSdkVersion, THEME_ID_UNKNOWN, THEME_ID_LXX_LIGHT); assertUpgradePlatformFromTo( - oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_DARK); + oldSdkVersion, newSdkVersion, THEME_ID_ILLEGAL, THEME_ID_LXX_LIGHT); } } diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java b/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java index 79c7d08cc..2101ddf33 100644 --- a/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java +++ b/tests/src/com/android/inputmethod/keyboard/layout/Bengali.java @@ -72,20 +72,25 @@ public final class Bengali extends LayoutBase { private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() .setKeysOfRow(1, // U+0994: "ঔ" BENGALI LETTER AU + // U+09CC: "ৌ" BENGALI VOWEL SIGN AU // U+09E7: "১" BENGALI DIGIT ONE - key("\u0994", joinMoreKeys("\u09E7", "1")), + key("\u0994", joinMoreKeys("\u09CC", "\u09E7", "1")), // U+0990: "ঐ" BENGALI LETTER AI + // U+09C8: "ৈ" BENGALI VOWEL SIGN AI // U+09E8: "২" BENGALI DIGIT TWO - key("\u0990", joinMoreKeys("\u09E8", "2")), + key("\u0990", joinMoreKeys("\u09C8", "\u09E8", "2")), // U+0986: "আ" BENGALI LETTER AA + // U+09BE: "া" BENGALI VOWEL SIGN AA // U+09E9: "৩" BENGALI DIGIT THREE - key("\u0986", joinMoreKeys("\u09E9", "3")), + key("\u0986", joinMoreKeys("\u09BE", "\u09E9", "3")), // U+0988: "ঈ" BENGALI LETTER II + // U+09C0: "ী" BENGALI VOWEL SIGN II // U+09EA: "৪" BENGALI DIGIT FOUR - key("\u0988", joinMoreKeys("\u09EA", "4")), + key("\u0988", joinMoreKeys("\u09C0", "\u09EA", "4")), // U+098A: "ঊ" BENGALI LETTER UU + // U+09C2: "ূ" BENGALI VOWEL SIGN UU // U+09EB: "৫" BENGALI DIGIT FIVE - key("\u098A", joinMoreKeys("\u09EB", "5")), + key("\u098A", joinMoreKeys("\u09C2", "\u09EB", "5")), // U+09AC: "ব" BENGALI LETTER BA // U+09AD: "ভ" BENGALI LETTER BHA // U+09EC: "৬" BENGALI DIGIT SIX diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java new file mode 100644 index 000000000..5ce7f4d9c --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/Kannada.java @@ -0,0 +1,197 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout; + +import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; +import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; +import com.android.inputmethod.latin.Constants; + +import java.util.Locale; + +/** + * The Kannada keyboard. + */ +public final class Kannada extends LayoutBase { + private static final String LAYOUT_NAME = "kannada"; + + public Kannada(final LayoutCustomizer customizer) { + super(customizer, Symbols.class, SymbolsShifted.class); + } + + @Override + public String getName() { return LAYOUT_NAME; } + + public static class KannadaCustomizer extends LayoutCustomizer { + public KannadaCustomizer(final Locale locale) { super(locale); } + + @Override + public ExpectedKey getAlphabetKey() { return KANNADA_ALPHABET_KEY; } + + @Override + public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; } + + @Override + public ExpectedKey[] getOtherCurrencyKeys() { + return SymbolsShifted.CURRENCIES_OTHER_GENERIC; + } + + @Override + public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { + return EMPTY_KEYS; + } + + @Override + public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { + return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; + } + + @Override + public ExpectedKey[] getSpaceKeys(final boolean isPhone) { + return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY)); + } + + // U+0C85: "ಅ" KANNADA LETTER A + // U+0C86: "ಆ" KANNADA LETTER AA + // U+0C87: "ಇ" KANNADA LETTER I + private static final ExpectedKey KANNADA_ALPHABET_KEY = key( + "\u0C85\u0C86\u0C87", Constants.CODE_SWITCH_ALPHA_SYMBOL); + + // U+20B9: "₹" INDIAN RUPEE SIGN + private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9", + Symbols.CURRENCY_GENERIC_MORE_KEYS); + } + + @Override + ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } + + @Override + ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { + return null; + } + + private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() + .setKeysOfRow(1, + // U+0CCC: "ೌ" KANNADA VOWEL SIGN AU + // U+0C94: "ಔ" KANNADA LETTER AU + // U+0CE7: "೧" KANNADA DIGIT ONE + key("\u0CCC", joinMoreKeys("\u0C94", "\u0CE7", "1")), + // U+0CC8: "ೈ" KANNADA VOWEL SIGN AI + // U+0C90: "ಐ" KANNADA LETTER AI + // U+0CE8: "೨" KANNADA DIGIT TWO + key("\u0CC8", joinMoreKeys("\u0C90", "\u0CE8", "2")), + // U+0CBE: "ಾ" KANNADA VOWEL SIGN AA + // U+0C86: "ಆ" KANNADA LETTER AA + // U+0CE9: "೩" KANNADA DIGIT THREE + key("\u0CBE", joinMoreKeys("\u0C86", "\u0CE9", "3")), + // U+0CC0: "ೀ" KANNADA VOWEL SIGN II + // U+0C88: "ಈ" KANNADA LETTER II + // U+0CEA: "೪" KANNADA DIGIT FOUR + key("\u0CC0", joinMoreKeys("\u0C88", "\u0CEA", "4")), + // U+0CC2: "ೂ" KANNADA VOWEL SIGN UU + // U+0C8A: "ಊ" KANNADA LETTER UU + // U+0CEB: "೫" KANNADA DIGIT FIVE + key("\u0CC2", joinMoreKeys("\u0C8A", "\u0CEB", "5")), + // U+0CAC: "ಬ" KANNADA LETTER BA + // U+0CAD: "ಭ" KANNADA LETTER BHA + // U+0CEC: "೬" KANNADA DIGIT SIX + key("\u0CAC", joinMoreKeys("\u0CAD", "\u0CEC", "6")), + // U+0CB9: "ಹ" KANNADA LETTER HA + // U+0C99: "ಙ" KANNADA LETTER NGA + // U+0CED: "೭" KANNADA DIGIT SEVEN + key("\u0CB9", joinMoreKeys("\u0C99", "\u0CED", "7")), + // U+0C97: "ಗ" KANNADA LETTER GA + // U+0C98: "ಘ" KANNADA LETTER GHA + // U+0CEE: "೮" KANNADA DIGIT EIGHT + key("\u0C97", joinMoreKeys("\u0C98", "\u0CEE", "8")), + // U+0CA6: "ದ" KANNADA LETTER DA + // U+0CA7: "ಧ" KANNADA LETTER DHA + // U+0CEF: "೯" KANNADA DIGIT NINE + key("\u0CA6", joinMoreKeys("\u0CA7", "\u0CEF", "9")), + // U+0C9C: "ಜ" KANNADA LETTER JA + // U+0C9D: "ಝ" KANNADA LETTER JHA + // U+0CE6: "೦" KANNADA DIGIT ZERO + key("\u0C9C", joinMoreKeys("\u0C9D", "\u0CE6", "0")), + // U+0CA1: "ಡ" KANNADA LETTER DDA + // U+0CA2: "ಢ" KANNADA LETTER DDHA + key("\u0CA1", moreKey("\u0CA2"))) + .setKeysOfRow(2, + // U+0CCB: "ೋ" KANNADA VOWEL SIGN OO + // U+0C93: "ಓ" KANNADA LETTER OO + key("\u0CCB", moreKey("\u0C93")), + // U+0CC7: "ೇ" KANNADA VOWEL SIGN EE + // U+0C8F: "ಏ" KANNADA LETTER EE + key("\u0CC7", moreKey("\u0C8F")), + // U+0CCD: "್" KANNADA SIGN VIRAMA + // U+0C85: "ಅ" KANNADA LETTER A + key("\u0CCD", moreKey("\u0C85")), + // U+0CBF: "ಿ" KANNADA VOWEL SIGN I + // U+0C87: "ಇ" KANNADA LETTER I + key("\u0CBF", moreKey("\u0C87")), + // U+0CC1: "ು" KANNADA VOWEL SIGN U + // U+0C89: "ಉ" KANNADA LETTER U + key("\u0CC1", moreKey("\u0C89")), + // U+0CAA: "ಪ" KANNADA LETTER PA + // U+0CAB: "ಫ" KANNADA LETTER PHA + key("\u0CAA", moreKey("\u0CAB")), + // U+0CB0: "ರ" KANNADA LETTER RA + // U+0CB1: "ಱ" KANNADA LETTER RRA + // U+0CC3: "ೃ" KANNADA VOWEL SIGN VOCALIC R + key("\u0CB0", joinMoreKeys("\u0CB1", "\u0CC3")), + // U+0C95: "ಕ" KANNADA LETTER KA + // U+0C96: "ಖ" KANNADA LETTER KHA + key("\u0C95", moreKey("\u0C96")), + // U+0CA4: "ತ" KANNADA LETTER TA + // U+0CA5: "ಥ" KANNADA LETTER THA + key("\u0CA4", moreKey("\u0CA5")), + // U+0C9A: "ಚ" KANNADA LETTER CA + // U+0C9B: "ಛ" KANNADA LETTER CHA + key("\u0C9A", moreKey("\u0C9B")), + // U+0C9F: "ಟ" KANNADA LETTER TTA + // U+0CA0: "ಠ" KANNADA LETTER TTHA + key("\u0C9F", moreKey("\u0CA0"))) + .setKeysOfRow(3, + // U+0CC6: "ೆ" KANNADA VOWEL SIGN E + // U+0C92: "ಒ" KANNADA LETTER O + key("\u0CC6", moreKey("\u0C92")), + // U+0C82: "ಂ" KANNADA SIGN ANUSVARA + // U+0C8E: "ಎ" KANNADA LETTER E + key("\u0C82", moreKey("\u0C8E")), + // U+0CAE: "ಮ" KANNADA LETTER MA + // U+0CA3: "ಣ" KANNADA LETTER NNA + key("\u0CAE", moreKey("\u0CA3")), + // U+0CA8: "ನ" KANNADA LETTER NA + // U+0CB5: "ವ" KANNADA LETTER VA + "\u0CA8", "\u0CB5", + // U+0CB2: "ಲ" KANNADA LETTER LA + // U+0CB3: "ಳ" KANNADA LETTER LLA + key("\u0CB2", moreKey("\u0CB3")), + // U+0CB8: "ಸ" KANNADA LETTER SA + // U+0CB6: "ಶ" KANNADA LETTER SHA + key("\u0CB8", moreKey("\u0CB6")), + // U+0C8B: "ಋ" KANNADA LETTER VOCALIC R + // U+0CCD/U+0CB0: "್ರ" KANNADA SIGN VIRAMA/KANNADA LETTER RA + key("\u0C8B", moreKey("\u0CCD\u0CB0")), + // U+0CB7: "ಷ" KANNADA LETTER SSA + // U+0C95/U+0CCD/U+0CB7: + // "ಕ್ಷ" KANNADA LETTER RA/KANNADA SIGN VIRAMA/KANNADA LETTER SSA + key("\u0CB7", moreKey("\u0C95\u0CCD\u0CB7")), + // U+0CAF: "ಯ" KANNADA LETTER YA + // U+0C9C/U+0CCD/U+0C9E: + // "ಜ್ಞ" KANNADA LETTER JA/KANNADA SIGN VIRAMA/KANNADA LETTER NYA + key("\u0CAF", moreKey("\u0C9C\u0CCD\u0C9E"))) + .build(); +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java b/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java new file mode 100644 index 000000000..b44b888e1 --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/Malayalam.java @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout; + +import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; +import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; +import com.android.inputmethod.latin.Constants; + +import java.util.Locale; + +/** + * The Malayalam keyboard. + */ +public final class Malayalam extends LayoutBase { + private static final String LAYOUT_NAME = "malayalam"; + + public Malayalam(final LayoutCustomizer customizer) { + super(customizer, Symbols.class, SymbolsShifted.class); + } + + @Override + public String getName() { return LAYOUT_NAME; } + + public static class MalayalamCustomizer extends LayoutCustomizer { + public MalayalamCustomizer(final Locale locale) { super(locale); } + + @Override + public ExpectedKey getAlphabetKey() { return MALAYALAM_ALPHABET_KEY; } + + @Override + public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; } + + @Override + public ExpectedKey[] getOtherCurrencyKeys() { + return SymbolsShifted.CURRENCIES_OTHER_GENERIC; + } + + @Override + public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { + return EMPTY_KEYS; + } + + @Override + public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { + return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; + } + + // U+0D05: "അ" MALAYALAM LETTER A + private static final ExpectedKey MALAYALAM_ALPHABET_KEY = key( + "\u0D05", Constants.CODE_SWITCH_ALPHA_SYMBOL); + + // U+20B9: "₹" INDIAN RUPEE SIGN + private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9", + Symbols.CURRENCY_GENERIC_MORE_KEYS); + } + + @Override + ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } + + @Override + ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { + return null; + } + + private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() + .setKeysOfRow(1, + // U+0D4D: "്" MALAYALAM SIGN VIRAMA + // U+0D05: "അ" MALAYALAM LETTER A + key("\u0D4D", joinMoreKeys("\u0D05", "1")), + // U+0D3E: "ാ" MALAYALAM VOWEL SIGN AA + // U+0D06: "ആ" MALAYALAM LETTER AA + key("\u0D3E", joinMoreKeys("\u0D06", "2")), + // U+0D3F: "ി" MALAYALAM VOWEL SIGN I + // U+0D07: "ഇ" MALAYALAM LETTER I + key("\u0D3F", joinMoreKeys("\u0D07", "3")), + // U+0D40: "ീ" MALAYALAM VOWEL SIGN II + // U+0D08: "ഈ" MALAYALAM LETTER II + key("\u0D40", joinMoreKeys("\u0D08", "4")), + // U+0D41: "ു" MALAYALAM VOWEL SIGN U + // U+0D09: "ഉ" MALAYALAM LETTER U + key("\u0D41", joinMoreKeys("\u0D09", "5")), + // U+0D42: "ൂ" MALAYALAM VOWEL SIGN UU + // U+0D0A: "ഊ" MALAYALAM LETTER UU + key("\u0D42", joinMoreKeys("\u0D0A", "6")), + // U+0D43: "ൃ" MALAYALAM VOWEL SIGN VOCALIC R + // U+0D0B: "ഋ" MALAYALAM LETTER VOCALIC R + key("\u0D43", joinMoreKeys("\u0D0B", "7")), + // U+0D46: "െ" MALAYALAM VOWEL SIGN E + // U+0D0E: "എ" MALAYALAM LETTER E + // U+0D10: "ഐ" MALAYALAM LETTER AI + // U+0D48: "ൈ" MALAYALAM VOWEL SIGN AI + key("\u0D46", joinMoreKeys("\u0D0E", "\u0D10", "\u0D48", "8")), + // U+0D47: "േ" MALAYALAM VOWEL SIGN EE + // U+0D0F: "ഏ" MALAYALAM LETTER EE + key("\u0D47", joinMoreKeys("\u0D0F", "9")), + // U+0D4A: "ൊ" MALAYALAM VOWEL SIGN O + // U+0D12: "ഒ" MALAYALAM LETTER O + key("\u0D4A", joinMoreKeys("\u0D12", "0")), + // U+0D4B: "ോ" MALAYALAM VOWEL SIGN OO + // U+0D13: "ഓ" MALAYALAM LETTER OO + // U+0D14: "ഔ" MALAYALAM LETTER AU + // U+0D57: "ൗ" MALAYALAM AU LENGTH MARK + key("\u0D4B", joinMoreKeys("\u0D13", "\u0D14", "\u0D57"))) + .setKeysOfRow(2, + // U+0D15: "ക" MALAYALAM LETTER KA + // U+0D16: "ഖ" MALAYALAM LETTER KHA + key("\u0D15", moreKey("\u0D16")), + // U+0D17: "ഗ" MALAYALAM LETTER GA + // U+0D18: "ഘ" MALAYALAM LETTER GHA + key("\u0D17", moreKey("\u0D18")), + // U+0D19: "ങ" MALAYALAM LETTER NGA + // U+0D1E: "ഞ" MALAYALAM LETTER NYA + key("\u0D19", moreKey("\u0D1E")), + // U+0D1A: "ച" MALAYALAM LETTER CA + // U+0D1B: "ഛ" MALAYALAM LETTER CHA + key("\u0D1A", moreKey("\u0D1B")), + // U+0D1C: "ജ" MALAYALAM LETTER JA + // U+0D1D: "ഝ" MALAYALAM LETTER JHA + key("\u0D1C", moreKey("\u0D1D")), + // U+0D1F: "ട" MALAYALAM LETTER TTA + // U+0D20: "ഠ" MALAYALAM LETTER TTHA + key("\u0D1F", moreKey("\u0D20")), + // U+0D21: "ഡ" MALAYALAM LETTER DDA + // U+0D22: "ഢ" MALAYALAM LETTER DDHA + key("\u0D21", moreKey("\u0D22")), + // U+0D23: "ണ" MALAYALAM LETTER NNA + // U+0D7A: "ൺ" MALAYALAM LETTER CHILLU NN + key("\u0D23", moreKey("\u0D7A")), + // U+0D24: "ത" MALAYALAM LETTER TA + // U+0D25: "ഥ" MALAYALAM LETTER THA + key("\u0D24", moreKey("\u0D25")), + // U+0D26: "ദ" MALAYALAM LETTER DA + // U+0D27: "ധ" MALAYALAM LETTER DHA + key("\u0D26", moreKey("\u0D27")), + // U+0D28: "ഗന" MALAYALAM LETTER NA + // U+0D7B: "ൻ" MALAYALAM LETTER CHILLU N + key("\u0D28", moreKey("\u0D7B"))) + .setKeysOfRow(3, + // U+0D2A: "പ" MALAYALAM LETTER PA + // U+0D2B: "ഫ" MALAYALAM LETTER PHA + key("\u0D2A", moreKey("\u0D2B")), + // U+0D2C: "ബ" MALAYALAM LETTER BA + // U+0D2D: "ഭ" MALAYALAM LETTER BHA + key("\u0D2C", moreKey("\u0D2D")), + // U+0D2E: "മ" MALAYALAM LETTER MA + // U+0D02: "ം" MALAYALAM SIGN ANUSVARA + key("\u0D2E", moreKey("\u0D02")), + // U+0D2F: "യ" MALAYALAM LETTER YA + // U+0D4D/U+0D2F: "്യ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER YA + key("\u0D2F", moreKey("\u0D4D\u0D2F")), + // U+0D30: "ര" MALAYALAM LETTER RA + // U+0D4D/U+0D30: "്ര" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER RA + // U+0D7C: "ർ" MALAYALAM LETTER CHILLU RR + // U+0D31: "റ" MALAYALAM LETTER RRA + key("\u0D30", joinMoreKeys("\u0D4D\u0D30", "\u0D7C", "\u0D31")), + // U+0D32: "ല" MALAYALAM LETTER LA + // U+0D7D: "ൽ" MALAYALAM LETTER CHILLU L + key("\u0D32", moreKey("\u0D7D")), + // U+0D35: "വ" MALAYALAM LETTER VA + // U+0D4D/U+0D35: "്വ" MALAYALAM SIGN VIRAMA/MALAYALAM LETTER VA + key("\u0D35", moreKey("\u0D4D\u0D35")), + // U+0D36: "ശ" MALAYALAM LETTER SHA + // U+0D37: "ഷ" MALAYALAM LETTER SSA + // U+0D38: "സ" MALAYALAM LETTER SA + key("\u0D36", joinMoreKeys("\u0D37", "\u0D38")), + // U+0D39: "ഹ" MALAYALAM LETTER HA + // U+0D03: "ഃ" MALAYALAM SIGN VISARGA + key("\u0D39", moreKey("\u0D03")), + // U+0D33: "ള" MALAYALAM LETTER LLA + // U+0D7E: "ൾ" MALAYALAM LETTER CHILLU LL + // U+0D34: "ഴ" MALAYALAM LETTER LLLA + key("\u0D33", joinMoreKeys("\u0D7E", "\u0D34"))) + .build(); +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java index 1b571acc6..f2a2dfdd8 100644 --- a/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java +++ b/tests/src/com/android/inputmethod/keyboard/layout/Myanmar.java @@ -144,17 +144,29 @@ public final class Myanmar extends LayoutBase { key("\u1040", moreKey("0"))) .setKeysOfRow(2, // U+1006: "ဆ" MYANMAR LETTER CHA + // U+1039/U+1006: "္ဆ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CHA + key("\u1006", moreKey("\u1039\u1006")), // U+1010: "တ" MYANMAR LETTER TA + // U+1039/U+1010: "္တ" MYANMAR SIGN VIRAMA/MYANMAR LETTER TA + key("\u1010", moreKey("\u1039\u1010")), // U+1014: "န" MYANMAR LETTER NA + // U+1039/U+1014: "္န" MYANMAR SIGN VIRAMA/MYANMAR LETTER NA + key("\u1014", moreKey("\u1039\u1014")), // U+1019: "မ" MYANMAR LETTER MA + // U+1039/U+1019: "္မ" MYANMAR SIGN VIRAMA/MYANMAR LETTER MA + key("\u1019", moreKey("\u1039\u1019")), // U+1021: "အ" MYANMAR LETTER A // U+1015: "ပ" MYANMAR LETTER PA + "\u1021", "\u1015", // U+1000: "က" MYANMAR LETTER KA + // U+1039/U+1000: "္က" MYANMAR SIGN VIRAMA/MYANMAR LETTER KA + key("\u1000", moreKey("\u1039\u1000")), // U+1004: "င" MYANMAR LETTER NGA // U+101E: "သ" MYANMAR LETTER SA + "\u1004", "\u101E", // U+1005: "စ" MYANMAR LETTER CA - "\u1006", "\u1010", "\u1014", "\u1019", "\u1021", "\u1015", "\u1000", "\u1004", - "\u101E", "\u1005") + // U+1039/U+1005: "္စ" MYANMAR SIGN VIRAMA/MYANMAR LETTER CA + key("\u1005", moreKey("\u1039\u1005"))) .setKeysOfRow(3, // U+1031: "ေ" MYANMAR VOWEL SIGN E // U+103B: "ျ" MYANMAR CONSONANT SIGN MEDIAL YA @@ -172,7 +184,8 @@ public final class Myanmar extends LayoutBase { // U+1030: "ူ" MYANMAR VOWEL SIGN UU key("\u102F", moreKey("\u1030")), // U+102C: "ာ" MYANMAR VOWEL SIGN AA - "\u102C", + // U+102B: "ါ" MYANMAR VOWEL SIGN TALL AA + key("\u102C", moreKey("\u102B")), // U+103A: "်" MYANMAR SIGN ASAT // U+1032: "ဲ" MYANMAR VOWEL SIGN AI key("\u103A", moreKey("\u1032")), @@ -183,11 +196,19 @@ public final class Myanmar extends LayoutBase { "\u1038") .setKeysOfRow(4, // U+1016: "ဖ" MYANMAR LETTER PHA + "\u1016", // U+1011: "ထ" MYANMAR LETTER THA + // U+1039/U+1011: "္ထ" MYANMAR SIGN VIRAMA/MYANMAR LETTER THA + key("\u1011", moreKey("\u1039\u1011")), // U+1001: "ခ" MYANMAR LETTER KHA + // U+1039/U+1001: "္ခ" MYANMAR SIGN VIRAMA/MYANMAR LETTER KHA + key("\u1001", moreKey("\u1039\u1001")), // U+101C: "လ" MYANMAR LETTER LA + // U+1039/U+101C: "္လ" MYANMAR SIGN VIRAMA/MYANMAR LETTER LA + key("\u101C", moreKey("\u1039\u101C")), // U+1018: "ဘ" MYANMAR LETTER BHA - "\u1016", "\u1011", "\u1001", "\u101C", "\u1018", + // U+1039/U+1018: "္ဘ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BHA + key("\u1018", moreKey("\u1039\u1018")), // U+100A: "ည" MYANMAR LETTER NNYA // U+1009: "ဉ" MYANMAR LETTER NYA key("\u100A", moreKey("\u1009")), @@ -213,17 +234,28 @@ public final class Myanmar extends LayoutBase { "\u1029", "\u102A", "\u104D", "\u104C") .setKeysOfRow(2, // U+1017: "ဗ" MYANMAR LETTER BA + // U+1039/U+1017: "္ဗ" MYANMAR SIGN VIRAMA/MYANMAR LETTER BA + key("\u1017", moreKey("\u1039\u1017")), // U+1012: "ဒ" MYANMAR LETTER DA + // U+1039/U+1012: "္ဒ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DA + key("\u1012", moreKey("\u1039\u1012")), // U+1013: "ဓ" MYANMAR LETTER DHA + // U+1039/U+1013: "္ဓ" MYANMAR SIGN VIRAMA/MYANMAR LETTER DHA + key("\u1013", moreKey("\u1039\u1013")), // U+1003: "ဃ" MYANMAR LETTER GHA // U+100E: "ဎ" MYANMAR LETTER DDHA // U+103F: "ဿ" MYANMAR LETTER GREAT SA // U+100F: "ဏ" MYANMAR LETTER NNA + "\u1003", "\u100E", "\u103F", "\u100F", // U+1008: "ဈ" MYANMAR LETTER JHA + // U+1039/U+1008: "္ဈ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JHA + key("\u1008", moreKey("\u1039\u1008")), // U+1007: "ဇ" MYANMAR LETTER JA + // U+1039/U+1007: "္ဇ" MYANMAR SIGN VIRAMA/MYANMAR LETTER JA + key("\u1007", moreKey("\u1039\u1007")), // U+1002: "ဂ" MYANMAR LETTER GA - "\u1017", "\u1012", "\u1013", "\u1003", "\u100E", "\u103F", "\u100F", "\u1008", - "\u1007", "\u1002") + // U+1039/U+1002: "္ဂ" MYANMAR SIGN VIRAMA/MYANMAR LETTER GA + key("\u1002", moreKey("\u1039\u1002"))) .setKeysOfRow(3, // U+101A: "ယ" MYANMAR LETTER YA // U+1039: "္" MYANMAR SIGN VIRAMA diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java b/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java new file mode 100644 index 000000000..70385c7d0 --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/Tamil.java @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout; + +import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; +import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; +import com.android.inputmethod.latin.Constants; + +import java.util.Locale; + +/** + * The Tamil keyboard. + */ +public final class Tamil extends LayoutBase { + private static final String LAYOUT_NAME = "tamil"; + + public Tamil(final LayoutCustomizer customizer) { + super(customizer, Symbols.class, SymbolsShifted.class); + } + + @Override + public String getName() { return LAYOUT_NAME; } + + public static class TamilCustomizer extends LayoutCustomizer { + public TamilCustomizer(final Locale locale) { super(locale); } + + @Override + public ExpectedKey getAlphabetKey() { return TAMIL_ALPHABET_KEY; } + + @Override + public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; } + + @Override + public ExpectedKey[] getOtherCurrencyKeys() { + return SymbolsShifted.CURRENCIES_OTHER_GENERIC; + } + + @Override + public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { + return EMPTY_KEYS; + } + + @Override + public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { + return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; + } + + // U+0BA4: "த" TAMIL LETTER TA + // U+0BAE/U+0BBF: "மி" TAMIL LETTER MA/TAMIL VOWEL SIGN I + // U+0BB4/U+0BCD: "ழ்" TAMIL LETTER LLLA/TAMIL SIGN VIRAMA + private static final ExpectedKey TAMIL_ALPHABET_KEY = key( + "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD", Constants.CODE_SWITCH_ALPHA_SYMBOL); + + // U+0BF9: "௹" TAMIL RUPEE SIGN + private static final ExpectedKey CURRENCY_RUPEE = key("\u0BF9", + Symbols.CURRENCY_GENERIC_MORE_KEYS); + } + + @Override + ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } + + @Override + ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { + return null; + } + + private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() + .setKeysOfRow(1, + // U+0B94: "ஔ" TAMIL LETTER AU + key("\u0B94", moreKey("1")), + // U+0B90: "ஐ" TAMIL LETTER AI + key("\u0B90", moreKey("2")), + // U+0B86: "ஆ" TAMIL LETTER AA + key("\u0B86", moreKey("3")), + // U+0B88: "ஈ" TAMIL LETTER II + key("\u0B88", moreKey("4")), + // U+0B8A: "ஊ" TAMIL LETTER UU + key("\u0B8A", moreKey("5")), + // U+0BAE: "ம" TAMIL LETTER MA + key("\u0BAE", moreKey("6")), + // U+0BA9: "ன" TAMIL LETTER NNNA + key("\u0BA9", moreKey("7")), + // U+0BA8: "ந" TAMIL LETTER NA + key("\u0BA8", moreKey("8")), + // U+0B99: "ங" TAMIL LETTER NGA + key("\u0B99", moreKey("9")), + // U+0BA3: "ண" TAMIL LETTER NNA + key("\u0BA3", moreKey("0")), + // U+0B9E: "ஞ" TAMIL LETTER NYA + "\u0B9E") + .setKeysOfRow(2, + // U+0B93: "ஓ" TAMIL LETTER OO + // U+0BD0: "ௐ" TAMIL OM + key("\u0B93", moreKey("\u0BD0")), + // U+0B8F: "ஏ" TAMIL LETTER EE + "\u0B8F", + // U+0B85: "அ" TAMIL LETTER A + // U+0B83: "ஃ" TAMIL SIGN VISARGA + key("\u0B85", moreKey("\u0B83")), + // U+0B87: "இ" TAMIL LETTER I + // U+0B89: "உ" TAMIL LETTER U + // U+0BB1: "ற" TAMIL LETTER RRA + // U+0BAA: "ப" TAMIL LETTER PA + "\u0B87", "\u0B89", "\u0BB1", "\u0BAA", + // U+0B95: "க" TAMIL LETTER KA + // U+0BB9: "ஹ" TAMIL LETTER HA + // U+0B95/U+0BCD/U+0BB7: + // "க்ஷ" TAMIL LETTER KA/TAMIL SIGN VIRAMA/TAMIL LETTER SSA + key("\u0B95", joinMoreKeys("\u0BB9", "\u0B95\u0BCD\u0BB7")), + // U+0BA4: "த" TAMIL LETTER TA + "\u0BA4", + // U+0B9A: "ச" TAMIL LETTER CA + // U+0BB8: "ஸ" TAMIL LETTER SA + // U+0BB6/U+0BCD/U+0BB0/U+0BC0: + // "ஶ்ரீ" TAMIL LETTER SHA/TAMIL SIGN VIRAMA/TAMIL LETTER RA + // /TAMIL VOWEL SIGN II + key("\u0B9A", joinMoreKeys("\u0BB8", "\u0BB6\u0BCD\u0BB0\u0BC0")), + // U+0B9F: "ட" TAMIL LETTER TTA + "\u0B9F") + .setKeysOfRow(3, + // U+0B92: "ஒ" TAMIL LETTER O + // U+0B8E: "எ" TAMIL LETTER E + // U+0BCD: "்" TAMIL SIGN VIRAMA + // U+0BB0: "ர" TAMIL LETTER RA + // U+0BB5: "வ" TAMIL LETTER VA + // U+0BB4: "ழ TAMIL LETTER LLLA + // U+0BB2: "ல" TAMIL LETTER LA + // U+0BB3: "ள" TAMIL LETTER LLA + // U+0BAF: "ய" TAMIL LETTER YA + "\u0B92", "\u0B8E", "\u0BCD", "\u0BB0", "\u0BB5", "\u0BB4", "\u0BB2", "\u0BB3", + "\u0BAF", + // U+0BB7: "ஷ" TAMIL LETTER SSA + // U+0B9C: "ஜ" TAMIL LETTER JA + key("\u0BB7", moreKey("\u0B9C"))) + .build(); +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java new file mode 100644 index 000000000..cc8224c54 --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/Telugu.java @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout; + +import com.android.inputmethod.keyboard.layout.expected.ExpectedKey; +import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; +import com.android.inputmethod.latin.Constants; + +import java.util.Locale; + +/** + * The Telugu keyboard. + */ +public final class Telugu extends LayoutBase { + private static final String LAYOUT_NAME = "telugu"; + + public Telugu(final LayoutCustomizer customizer) { + super(customizer, Symbols.class, SymbolsShifted.class); + } + + @Override + public String getName() { return LAYOUT_NAME; } + + public static class TeluguCustomizer extends LayoutCustomizer { + public TeluguCustomizer(final Locale locale) { super(locale); } + + @Override + public ExpectedKey getAlphabetKey() { return TELUGU_ALPHABET_KEY; } + + @Override + public ExpectedKey getCurrencyKey() { return CURRENCY_RUPEE; } + + @Override + public ExpectedKey[] getOtherCurrencyKeys() { + return SymbolsShifted.CURRENCIES_OTHER_GENERIC; + } + + @Override + public ExpectedKey[] getLeftShiftKeys(final boolean isPhone) { + return EMPTY_KEYS; + } + + @Override + public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { + return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS; + } + + @Override + public ExpectedKey[] getSpaceKeys(final boolean isPhone) { + return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY)); + } + + // U+0C05: "అ" TELUGU LETTER A + // U+0C06: "ఆ" TELUGU LETTER AA + // U+0C07: "ఇ" TELUGU LETTER I + private static final ExpectedKey TELUGU_ALPHABET_KEY = key( + "\u0C05\u0C06\u0C07", Constants.CODE_SWITCH_ALPHA_SYMBOL); + + // U+20B9: "₹" INDIAN RUPEE SIGN + private static final ExpectedKey CURRENCY_RUPEE = key("\u20B9", + Symbols.CURRENCY_GENERIC_MORE_KEYS); + } + + @Override + ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; } + + @Override + ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) { + return null; + } + + private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder() + .setKeysOfRow(1, + // U+0C4C: "ౌ" TELUGU VOWEL SIGN AU + // U+0C14: "ఔ" TELUGU LETTER AU + key("\u0C4C", joinMoreKeys("\u0C14", "1")), + // U+0C48: "ై" TELUGU VOWEL SIGN AI + // U+0C10: "ఐ" TELUGU LETTER AI + key("\u0C48", joinMoreKeys("\u0C10", "2")), + // U+0C3E: "ా" TELUGU VOWEL SIGN AA + // U+0C06: "ఆ" TELUGU LETTER AA + key("\u0C3E", joinMoreKeys("\u0C06", "3")), + // U+0C40: "ీ" TELUGU VOWEL SIGN II + // U+0C08: "ఈ" TELUGU LETTER II + key("\u0C40", joinMoreKeys("\u0C08", "4")), + // U+0C42: "ూ" TELUGU VOWEL SIGN UU + // U+0C0A: "ఊ" TELUGU LETTER UU + key("\u0C42", joinMoreKeys("\u0C0A", "5")), + // U+0C2C: "బ" TELUGU LETTER BA + // U+0C2D: "భ" TELUGU LETTER BHA + key("\u0C2C", joinMoreKeys("\u0C2D", "6")), + // U+0C39: "హ" TELUGU LETTER HA + // U+0C03: "ః" TELUGU SIGN VISARGA + key("\u0C39", joinMoreKeys("\u0C03", "7")), + // U+0C17: "గ" TELUGU LETTER GA + // U+0C18: "ఘ" TELUGU LETTER GHA + key("\u0C17", joinMoreKeys("\u0C18", "8")), + // U+0C26: "ద" TELUGU LETTER DA + // U+0C27: "ధ" TELUGU LETTER DHA + key("\u0C26", joinMoreKeys("\u0C27", "9")), + // U+0C1C: "జ" TELUGU LETTER JA + // U+0C1D: "ఝ" TELUGU LETTER JHA + key("\u0C1C", joinMoreKeys("\u0C1D", "0")), + // U+0C21: "డ" TELUGU LETTER DDA + // U+0C22: "ఢ" TELUGU LETTER DDHA + key("\u0C21", moreKey("\u0C22"))) + .setKeysOfRow(2, + // U+0C4B: "ో" TELUGU VOWEL SIGN OO + // U+0C13: "ఓ" TELUGU LETTER OO + key("\u0C4B", moreKey("\u0C13")), + // U+0C47: "ే" TELUGU VOWEL SIGN EE + // U+0C0F: "ఏ" TELUGU LETTER EE + key("\u0C47", moreKey("\u0C0F")), + // U+0C4D: "్" TELUGU SIGN VIRAMA + // U+0C05: "అ" TELUGU LETTER A + key("\u0C4D", moreKey("\u0C05")), + // U+0C3F: "ి" TELUGU VOWEL SIGN I + // U+0C07: "ఇ" TELUGU LETTER I + key("\u0C3F", moreKey("\u0C07")), + // U+0C41: "ు" TELUGU VOWEL SIGN U + // U+0C09: "ఉ" TELUGU LETTER U + key("\u0C41", moreKey("\u0C09")), + // U+0C2A: "ప" TELUGU LETTER PA + // U+0C2B: "ఫ" TELUGU LETTER PHA + key("\u0C2A", moreKey("\u0C2B")), + // U+0C30: "ర" TELUGU LETTER RA + // U+0C31: "ఱ" TELUGU LETTER RRA + // U+0C43: "ృ" TELUGU VOWEL SIGN VOCALIC R + key("\u0C30", joinMoreKeys("\u0C31", "\u0C43")), + // U+0C15: "క" TELUGU LETTER KA + // U+0C16: "ఖ" TELUGU LETTER KHA + key("\u0C15", moreKey("\u0C16")), + // U+0C24: "త" TELUGU LETTER TA + // U+0C25: "థ" TELUGU LETTER THA + key("\u0C24", moreKey("\u0C25")), + // U+0C1A: "చ" TELUGU LETTER CA + // U+0C1B: "ఛ" TELUGU LETTER CHA + key("\u0C1A", moreKey("\u0C1B")), + // U+0C1F: "ట" TELUGU LETTER TTA + // U+0C20: "ఠ" TELUGU LETTER TTHA + key("\u0C1F", moreKey("\u0C20"))) + .setKeysOfRow(3, + // U+0C46: "ె" TELUGU VOWEL SIGN E + // U+0C12: "ఒ" TELUGU LETTER O + key("\u0C46", moreKey("\u0C12")), + // U+0C02: "ం" TELUGU SIGN ANUSVARA + // U+0C0E: "ఎ" TELUGU LETTER E + key("\u0C02", moreKey("\u0C0E")), + // U+0C2E: "మ" TELUGU LETTER MA + "\u0C2E", + // U+0C28: "న" TELUGU LETTER NA + // U+0C23: "ణ" TELUGU LETTER NNA + // U+0C19: "ఙ" TELUGU LETTER NGA + key("\u0C28", joinMoreKeys("\u0C23", "\u0C19")), + // U+0C35: "వ" TELUGU LETTER VA + "\u0C35", + // U+0C32: "ల" TELUGU LETTER LA + // U+0C33: "ళ" TELUGU LETTER LLA + key("\u0C32", moreKey("\u0C33")), + // U+0C38: "స" TELUGU LETTER SA + // U+0C36: "శ" TELUGU LETTER SHA + key("\u0C38", moreKey("\u0C36")), + // U+0C0B: "ఋ" TELUGU LETTER VOCALIC R + // U+0C4D/U+0C30: "్ర" TELUGU SIGN VIRAMA/TELUGU LETTER RA + key("\u0C0B", moreKey("\u0C4D\u0C30")), + // U+0C37: "ష" TELUGU LETTER SSA + // U+0C15/U+0C4D/U+0C37: + // "క్ష" TELUGU LETTER KA/TELUGU SIGN VIRAMA/TELUGU LETTER SSA + key("\u0C37", moreKey("\u0C15\u0C4D\u0C37")), + // U+0C2F: "య" TELUGU LETTER YA + // U+0C1C/U+0C4D/U+0C1E: + // "జ్ఞ" TELUGU LETTER JA/TELUGU SIGN VIRAMA/TELUGU LETTER NYA + key("\u0C2F", moreKey("\u0C1C\u0C4D\u0C1E"))) + .build(); +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java new file mode 100644 index 000000000..d1866e803 --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKannadaIN.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout.tests; + +import android.test.suitebuilder.annotation.SmallTest; + +import com.android.inputmethod.keyboard.layout.Kannada; +import com.android.inputmethod.keyboard.layout.Kannada.KannadaCustomizer; +import com.android.inputmethod.keyboard.layout.LayoutBase; + +import java.util.Locale; + +/** + * kn_IN: Kannada (India)/kannada + */ +@SmallTest +public final class TestsKannadaIN extends LayoutTestsBase { + private static final Locale LOCALE = new Locale("kn", "IN"); + private static final LayoutBase LAYOUT = new Kannada(new KannadaCustomizer(LOCALE)); + + @Override + LayoutBase getLayout() { return LAYOUT; } +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java new file mode 100644 index 000000000..f937de89a --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsMalayalamIN.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout.tests; + +import android.test.suitebuilder.annotation.SmallTest; + +import com.android.inputmethod.keyboard.layout.LayoutBase; +import com.android.inputmethod.keyboard.layout.Malayalam; +import com.android.inputmethod.keyboard.layout.Malayalam.MalayalamCustomizer; + +import java.util.Locale; + +/** + * ta_IN: Malayalam (India)/malayalam + */ +@SmallTest +public final class TestsMalayalamIN extends LayoutTestsBase { + private static final Locale LOCALE = new Locale("ml", "IN"); + private static final LayoutBase LAYOUT = new Malayalam(new MalayalamCustomizer(LOCALE)); + + @Override + LayoutBase getLayout() { return LAYOUT; } +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java new file mode 100644 index 000000000..5b3649d2b --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTamilIN.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout.tests; + +import android.test.suitebuilder.annotation.SmallTest; + +import com.android.inputmethod.keyboard.layout.LayoutBase; +import com.android.inputmethod.keyboard.layout.Tamil; +import com.android.inputmethod.keyboard.layout.Tamil.TamilCustomizer; + +import java.util.Locale; + +/** + * ta_IN: Tamil (India)/tamil + */ +@SmallTest +public final class TestsTamilIN extends LayoutTestsBase { + private static final Locale LOCALE = new Locale("ta", "IN"); + private static final LayoutBase LAYOUT = new Tamil(new TamilCustomizer(LOCALE)); + + @Override + LayoutBase getLayout() { return LAYOUT; } +} diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java new file mode 100644 index 000000000..04996d9aa --- /dev/null +++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsTeluguIN.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.inputmethod.keyboard.layout.tests; + +import android.test.suitebuilder.annotation.SmallTest; + +import com.android.inputmethod.keyboard.layout.LayoutBase; +import com.android.inputmethod.keyboard.layout.Telugu; +import com.android.inputmethod.keyboard.layout.Telugu.TeluguCustomizer; + +import java.util.Locale; + +/** + * te_IN: Telugu (India)/telugu + */ +@SmallTest +public final class TestsTeluguIN extends LayoutTestsBase { + private static final Locale LOCALE = new Locale("te", "IN"); + private static final LayoutBase LAYOUT = new Telugu(new TeluguCustomizer(LOCALE)); + + @Override + LayoutBase getLayout() { return LAYOUT; } +} |