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