18108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka/* 28108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * Copyright (C) 2014 The Android Open Source Project 38108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * 48108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 58108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * you may not use this file except in compliance with the License. 68108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * You may obtain a copy of the License at 78108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * 88108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 98108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * 108108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 118108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 128108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * See the License for the specific language governing permissions and 148108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * limitations under the License. 158108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka */ 168108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 178108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokapackage com.android.inputmethod.keyboard.layout.tests; 188108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 199ea443e8c02e32bcf87134d9fe4347111baacf35Dan Zivkovicimport android.test.suitebuilder.annotation.SmallTest; 208108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 218108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.LayoutBase; 228108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.Qwerty; 236959a0f214fc18e314f54213877956d95a1631e8Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.customizer.SerbianLatinCustomizer; 248108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.expected.ExpectedKey; 258108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokaimport com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder; 268108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 278108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokaimport java.util.Locale; 288108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 298108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka/** 308108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka * sr_ZZ: Serbian (Latin)/qwerty 318108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka */ 329ea443e8c02e32bcf87134d9fe4347111baacf35Dan Zivkovic@SmallTest 338108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaokapublic final class TestsSerbianLatinQwerty extends LayoutTestsBase { 348108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka private static final Locale LOCALE = new Locale("sr", "ZZ"); 358108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka private static final LayoutBase LAYOUT = new Qwerty(new SerbianLatinQwertyCustomizer(LOCALE)); 368108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 378108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 388108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka LayoutBase getLayout() { return LAYOUT; } 398108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 408108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka private static class SerbianLatinQwertyCustomizer extends SerbianLatinCustomizer { 416959a0f214fc18e314f54213877956d95a1631e8Tadashi G. Takaoka SerbianLatinQwertyCustomizer(final Locale locale) { super(locale); } 428108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 438108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 448108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { 458108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka return isPhone ? EMPTY_KEYS 466959a0f214fc18e314f54213877956d95a1631e8Tadashi G. Takaoka : joinKeys(EXCLAMATION_AND_QUESTION_MARKS, SHIFT_KEY); 478108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 488108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 498108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 508108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka protected void setSerbianKeys(final ExpectedKeyboardBuilder builder) { 518108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // QWERTY layout doesn't have Serbian Latin Keys. 528108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 538108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 548108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 558108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka protected void setMoreKeysOfS(final ExpectedKeyboardBuilder builder) { 568108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka builder 578108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // U+0161: "š" LATIN SMALL LETTER S WITH CARON 588108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setMoreKeysOf("s", "\u0161") 598108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setAdditionalMoreKeysPositionOf("s", 2); 608108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 618108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 628108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 638108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka protected void setMoreKeysOfC(final ExpectedKeyboardBuilder builder) { 648108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka builder 658108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // U+010D: "č" LATIN SMALL LETTER C WITH CARON 668108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE 678108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setMoreKeysOf("c", "\u010D", "\u0107") 688108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setAdditionalMoreKeysPositionOf("c", 3); 698108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 708108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 718108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 728108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka protected void setMoreKeysOfD(final ExpectedKeyboardBuilder builder) { 738108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka builder 748108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // U+0111: "đ" LATIN SMALL LETTER D WITH STROKE 758108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setMoreKeysOf("d", "\u0111") 768108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setAdditionalMoreKeysPositionOf("d", 2); 778108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 788108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka 798108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka @Override 808108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka protected void setMoreKeysOfZ(final ExpectedKeyboardBuilder builder) { 818108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka builder 828108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON 838108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setMoreKeysOf("z", "\u017E") 848108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka .setAdditionalMoreKeysPositionOf("z", 2); 858108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 868108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka } 878108a3e1cdceb1874804f74ec24d824a7df1b669Tadashi G. Takaoka} 88