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