1f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa/* 2f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * Copyright (C) 2014 The Android Open Source Project 3f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * 4f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * Licensed under the Apache License, Version 2.0 (the "License"); 5f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * you may not use this file except in compliance with the License. 6f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * You may obtain a copy of the License at 7f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * 8f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * http://www.apache.org/licenses/LICENSE-2.0 9f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * 10f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * Unless required by applicable law or agreed to in writing, software 11f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * distributed under the License is distributed on an "AS IS" BASIS, 12f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * See the License for the specific language governing permissions and 14f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa * limitations under the License. 15f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa */ 16f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 1735f743713dfeb4e9138fee0f7bb6a7ee1da53521Yohei Yukawapackage android.view.inputmethod; 18f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 1935f743713dfeb4e9138fee0f7bb6a7ee1da53521Yohei Yukawaimport android.os.Parcel; 20f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawaimport android.test.InstrumentationTestCase; 21f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawaimport android.test.suitebuilder.annotation.SmallTest; 22f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawaimport android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder; 23f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 24f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawaimport java.util.ArrayList; 25f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 26f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawapublic class InputMethodSubtypeArrayTest extends InstrumentationTestCase { 27f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa @SmallTest 28f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa public void testInstanciate() throws Exception { 29f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa final ArrayList<InputMethodSubtype> subtypes = new ArrayList<InputMethodSubtype>(); 30f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa subtypes.add(createDummySubtype(0, "en_US")); 31f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa subtypes.add(createDummySubtype(1, "en_US")); 32f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa subtypes.add(createDummySubtype(2, "ja_JP")); 33f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 34f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa final InputMethodSubtypeArray array = new InputMethodSubtypeArray(subtypes); 35f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.size(), array.getCount()); 36f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(0), array.get(0)); 37f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(1), array.get(1)); 38f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(2), array.get(2)); 39f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 40f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa final InputMethodSubtypeArray clonedArray = cloneViaParcel(array); 41f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.size(), clonedArray.getCount()); 42f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(0), clonedArray.get(0)); 43f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(1), clonedArray.get(1)); 44f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(subtypes.get(2), clonedArray.get(2)); 45f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 46f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa final InputMethodSubtypeArray clonedClonedArray = cloneViaParcel(clonedArray); 47f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(clonedArray.getCount(), clonedClonedArray.getCount()); 48f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(clonedArray.get(0), clonedClonedArray.get(0)); 49f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(clonedArray.get(1), clonedClonedArray.get(1)); 50f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa assertEquals(clonedArray.get(2), clonedClonedArray.get(2)); 51f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } 52f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 53f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa InputMethodSubtypeArray cloneViaParcel(final InputMethodSubtypeArray original) { 54f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa Parcel parcel = null; 55f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa try { 56f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa parcel = Parcel.obtain(); 57f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa original.writeToParcel(parcel); 58f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa parcel.setDataPosition(0); 59f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa return new InputMethodSubtypeArray(parcel); 60f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } finally { 61f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa if (parcel != null) { 62f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa parcel.recycle(); 63f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } 64f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } 65f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } 66f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa 67f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa private static InputMethodSubtype createDummySubtype(final int id, final String locale) { 68f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa final InputMethodSubtypeBuilder builder = new InputMethodSubtypeBuilder(); 69f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa return builder.setSubtypeNameResId(0) 70f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa .setSubtypeIconResId(0) 71f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa .setSubtypeId(id) 72f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa .setSubtypeLocale(locale) 73f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa .setIsAsciiCapable(true) 74f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa .build(); 75f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa } 76f06569561fe1c6e898debf8bb9f37331a9f87323Yohei Yukawa} 77