InputMethodSubtypeTest.java revision 638e4787ba5093c5e43d8b15db57fff3a31a4e21
1d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville/* 2d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * Copyright (C) 2014 The Android Open Source Project 3d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * 4d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * you may not use this file except in compliance with the License. 6d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * You may obtain a copy of the License at 7d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * 8d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * 10d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * Unless required by applicable law or agreed to in writing, software 11d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * See the License for the specific language governing permissions and 14d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville * limitations under the License. 15d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville */ 16d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 17d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savillepackage android.os; 18d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 19d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savilleimport android.test.InstrumentationTestCase; 20d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savilleimport android.test.suitebuilder.annotation.SmallTest; 21d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savilleimport android.view.inputmethod.InputMethodSubtype; 22d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savilleimport android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder; 23d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 24d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savillepublic class InputMethodSubtypeTest extends InstrumentationTestCase { 25d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville @SmallTest 26d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville public void testLocale() throws Exception { 27d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville // Compare locale 28d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").getLocale(), 29d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville createDummySubtype("en_US").getLocale()); 30d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").getLocale(), 31d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville cloneViaParcel(createDummySubtype("en_US")).getLocale()); 32d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").getLocale(), 33d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville cloneViaParcel(cloneViaParcel(createDummySubtype("en_US"))).getLocale()); 34d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 35d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 36d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville @SmallTest 37d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville public void testHashCode() throws Exception { 38d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").hashCode(), 39d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville createDummySubtype("en_US").hashCode()); 40d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").hashCode(), 41d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville cloneViaParcel(createDummySubtype("en_US")).hashCode()); 42d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville assertEquals(createDummySubtype("en_US").hashCode(), 43d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville cloneViaParcel(cloneViaParcel(createDummySubtype("en_US"))).hashCode()); 44d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 45d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 46d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville private static final InputMethodSubtype cloneViaParcel(final InputMethodSubtype original) { 47d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville Parcel parcel = null; 48d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville try { 49d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville parcel = Parcel.obtain(); 50d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville original.writeToParcel(parcel, 0); 51d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville parcel.setDataPosition(0); 52d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville return InputMethodSubtype.CREATOR.createFromParcel(parcel); 53d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } finally { 54d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville if (parcel != null) { 55d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville parcel.recycle(); 56d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 57d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 58d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 59d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville 60d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville private static final InputMethodSubtype createDummySubtype(final String locale) { 61d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville final InputMethodSubtypeBuilder builder = new InputMethodSubtypeBuilder(); 62d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville return builder.setSubtypeNameResId(0) 63d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville .setSubtypeIconResId(0) 64d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville .setSubtypeLocale(locale) 65d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville .setIsAsciiCapable(true) 66d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville .build(); 67d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville } 68d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville} 69d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville