173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka/*
273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * Copyright (C) 2014 The Android Open Source Project
373b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka *
473b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License");
573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * you may not use this file except in compliance with the License.
673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * You may obtain a copy of the License at
773b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka *
873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka *      http://www.apache.org/licenses/LICENSE-2.0
973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka *
1073b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software
1173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS,
1273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1373b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * See the License for the specific language governing permissions and
1473b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka * limitations under the License.
1573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka */
1673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
17f2c64cd64424fd2012b9d471151bb8424500be96Tadashi G. Takaokapackage com.android.inputmethod.keyboard.layout.tests;
1873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
1973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaokaimport android.test.suitebuilder.annotation.SmallTest;
2073b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaokaimport android.view.inputmethod.InputMethodSubtype;
2173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
22f2c64cd64424fd2012b9d471151bb8424500be96Tadashi G. Takaokaimport com.android.inputmethod.keyboard.KeyboardLayoutSetTestsBase;
23f2c64cd64424fd2012b9d471151bb8424500be96Tadashi G. Takaokaimport com.android.inputmethod.keyboard.KeyboardTheme;
2473b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaokaimport com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
2573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
2673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaokaimport java.util.ArrayList;
2773b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
2873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka@SmallTest
2973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaokapublic class KeyboardLayoutSetSubtypesCountTests extends KeyboardLayoutSetTestsBase {
3067bb8cbe61bd0f1a29b4b248895d117ecfac138dChieu Nguyen    private static final int NUMBER_OF_SUBTYPES = 81;
3167bb8cbe61bd0f1a29b4b248895d117ecfac138dChieu Nguyen    private static final int NUMBER_OF_ASCII_CAPABLE_SUBTYPES = 49;
3273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    private static final int NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES = 2;
3373b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
34c5dc74067385f9ab6ec3086825d0b369c26a1ea3Tadashi G. Takaoka    @Override
35c5dc74067385f9ab6ec3086825d0b369c26a1ea3Tadashi G. Takaoka    protected int getKeyboardThemeForTests() {
36c5dc74067385f9ab6ec3086825d0b369c26a1ea3Tadashi G. Takaoka        return KeyboardTheme.THEME_ID_KLP;
37c5dc74067385f9ab6ec3086825d0b369c26a1ea3Tadashi G. Takaoka    }
38c5dc74067385f9ab6ec3086825d0b369c26a1ea3Tadashi G. Takaoka
3973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    private static String toString(final ArrayList<InputMethodSubtype> subtypeList) {
4073b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        final StringBuilder sb = new StringBuilder();
4173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        for (int index = 0; index < subtypeList.size(); index++) {
4273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka            final InputMethodSubtype subtype = subtypeList.get(index);
4373b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka            sb.append(index + ": ");
4473b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka            sb.append(SubtypeLocaleUtils.getSubtypeNameForLogging(subtype));
4573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka            sb.append("\n");
4673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        }
4773b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        return sb.toString();
4873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    }
4973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
5073b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    public final void testAllSubtypesCount() {
5173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        final ArrayList<InputMethodSubtype> allSubtypesList = getAllSubtypesList();
5273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        assertEquals(toString(allSubtypesList), NUMBER_OF_SUBTYPES, allSubtypesList.size());
5373b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    }
5473b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
5573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    public final void testAsciiCapableSubtypesCount() {
5673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        final ArrayList<InputMethodSubtype> asciiCapableSubtypesList =
57dbb2182e3928cb8d204290f83a01718d5ff9b162Tadashi G. Takaoka                getSubtypesFilteredBy(FILTER_IS_ASCII_CAPABLE);
5873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        assertEquals(toString(asciiCapableSubtypesList),
5973b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka                NUMBER_OF_ASCII_CAPABLE_SUBTYPES, asciiCapableSubtypesList.size());
6073b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    }
6173b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka
6273b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    public final void testAdditionalSubtypesCount() {
63dbb2182e3928cb8d204290f83a01718d5ff9b162Tadashi G. Takaoka        final ArrayList<InputMethodSubtype> additionalSubtypesList =
64dbb2182e3928cb8d204290f83a01718d5ff9b162Tadashi G. Takaoka                getSubtypesFilteredBy(FILTER_IS_ADDITIONAL_SUBTYPE);
6573b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka        assertEquals(toString(additionalSubtypesList),
6673b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka                NUMBER_OF_PREDEFINED_ADDITIONAL_SUBTYPES, additionalSubtypesList.size());
6773b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka    }
6873b3b81149d47c186ba3f9c056ae7854e2c18113Tadashi G. Takaoka}
69